2015-05-20 2 views
0

Я использовал запрос, который используется для импорта CSV-файла в базу данных:сделать JFile Chooser Query

DATA LOCAL INFILE 'C:\\Users\\Desktop\\TT (4).csv' INTO TABLE incident FIELDS TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n' (id_incident, status, vendor, priority, criticality_tt, title, description, affected_ci, affected_service, assignee, assignment_group, reassignment_count, open_time, close_time, outage_start, reassignment_time, outage_end, impact, solution, assignment_manager_name, assign_deptmgr, opened_by, closed_by, closure_code, update_action, last_updated_by); 

Я хочу, чтобы сделать эту операцию с JFileChooser, так что я пытался с этим кодом:

JFileChooser fc=new JFileChooser(); 
fc.showOpenDialog(this); 
File f=fc.getSelectedFile(); 
String path=f.getAbsolutePath(); 
try 
{ 
    FileInputStream fin=new FileInputStream(f); 
int len=(int)f.length(); 
     java.sql.PreparedStatement ps1=con.prepareStatement("LOAD DATA LOCAL INFILE '?' INTO TABLE incident FIELDS TERMINATED BY ';' ENCLOSED BY '\"' ESCAPED BY '\\\\' LINES TERMINATED BY '\\n' (id_incident, status, vendor, priority, criticality_tt, title, description, affected_ci, affected_service, assignee, assignment_group, reassignment_count, open_time, close_time, outage_start, reassignment_time, outage_end, impact, solution, assignment_manager_name, assign_deptmgr, opened_by, closed_by, closure_code, update_action, last_updated_by)"); 
ps1.setBinaryStream(1, fin, len); 
int status =ps1.executeUpdate(); 
if(status > 0) 
{ 
    j1.setText("Successfully inserted in DB"); 
} 
else 
{ 
     j2.setText(" not inserted!"); 
     } 
} 
catch(Exception e) 
{System.out.println(e); 
} 

Не дает никаких результатов и результатов.

+0

Я считаю, что такое утверждение не может быть выполнено как PreparedSatetement, особенно с параметром FileInputStream. Попробуйте выполнить его как статический Statement. – agad

ответ

-1

Это поможет вам в вашей задаче.

public YOUR-METHOD(){ 
    int returnVal = fileChooser.showOpenDialog(this); 
    if (returnVal == JFileChooser.APPROVE_OPTION) { 
     File file = fileChooser.getSelectedFile(); 
     try { 
      // What to do with the file, e.g. display it in a TextArea 
      CSVReader reader = new CSVReader(new FileReader(file.getAbsolutePath())); 
      List myEntries = reader.readAll(); 
     } catch (IOException ex) { 
      System.out.println("problem accessing file"+file.getAbsolutePath()); 
     } 
    } else { 
     System.out.println("File access cancelled by user."); 
    } 
} 

И here некоторые видео-учебник вы можете научиться.

+0

Где * таблица * метод? – agad

+0

@agad: его не нужно с целью этого вопроса, у меня была копия пасты. 'myEntries' содержит все записи, делайте то, что вам нужно. –

+0

Я считаю, что эта проблема связана с ** загрузкой данных в db **, а не чтением файла. Я не вижу большой разницы между вашим кодом (* CSVReader reader = новый CSVReader (новый FileReader (file.getAbsolutePath());) и его код (* FileInputStream fin = new FileInputStream (f); *), за исключением проверка, действительно ли файл был выбран (* if (returnVal == JFileChooser.APPROVE_OPTION) *). – agad