2015-10-06 17 views
0

我想使用Java應用程序導入表。查詢與MySQL工作臺完美運行:java.sql.SQLException:ResultSet來自UPDATE。沒有數據

下面是該查詢:

LOAD DATA LOCAL INFILE 'C:\\Users\\Zero\\Desktop\\Book1.csv' INTO TABLE tbl_students 
FIELDS TERMINATED BY ',' 
enclosed by '"' 
lines terminated by '\n' 

現在使用,我包括一個保存路徑,爲用戶在這裏找到該文件是代碼:

chooser = new JFileChooser(); 
    chooser.setCurrentDirectory(new java.io.File(".")); 
    chooser.setDialogTitle(choosertitle); 
    FileNameExtensionFilter filter = new FileNameExtensionFilter("CSV Files", "csv"); 
    chooser.setFileFilter(filter); 
    if (chooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) { 
     file = chooser.getSelectedFile(); 
     path = file.getAbsolutePath(); 
     System.out.println(path.replace("\\", "\\\\")); 
     ImportTBL(); 

    } 
    else { 
     System.out.println("No Selection ");} 

的ImportTBL()這裏是代碼

private void ImportTBL(){ 
    String sql = "LOAD DATA LOCAL INFILE '"+path.replace("\\", "\\\\")+"' INTO TABLE tbl_students " 
    + "FIELDS TERMINATED BY ',' enclosed by '\"' lines terminated by '\\n'"; 
    System.out.println(sql); 
    try{PreparedStatement ps = conn.prepareStatement(sql); 
    ResultSet rs = ps.executeQuery(); 

     if(rs.next()){ 
     JOptionPane.showMessageDialog(null, "Import Successful!"); 
     } 

     else{ 
     JOptionPane.showMessageDialog(null, "Import Fail!");} 
     } 

    catch(Exception e){ 
     JOptionPane.showMessageDialog(null, "Error: "+ e); 
     } 
} 
+0

嘗試刪除本地,如'LOAD DATA INFILE'。 –

+0

@RahulYadav我想導入一張表,爲什麼我應該刪除LOAD DATA INFILE –

+0

你會得到什麼錯誤? –

回答

0

的問題是,你是執行與的executeQuery()方法加載語句。它被設計用於執行返回結果集的select語句,而不是數據處理語句。請改用executeUpdate()方法並檢查受影響的行數以確定執行是否成功。

另外,沒有必要準備這個聲明,因爲用戶很可能不會一次又一次地重複運行它。而且你的代碼甚至不嘗試利用準備好的語句提供的優點。

+0

謝謝你的解釋。 –

相關問題