簡體   English   中英

java.sql.SQLException:ResultSet來自UPDATE。 沒有數據

[英]java.sql.SQLException: ResultSet is from UPDATE. No Data

我正在嘗試使用Java應用程序導入表。 該查詢可與MySQL Workbench完美運行:

這是查詢:

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);
        }
}

我認為您使用的執行方法錯誤。 您得到的異常表明ResultSet來自UPDATE。 沒有數據

嘗試使用:

int affectedRows = ps.executeUpdate();

if ( affectedRows <= 0 ) System.out.println("failed!");
else System.out.println("Success :)");

請參閱: http : //docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html#executeUpdate()

問題在於您正在使用executeQuery()方法執行load語句。 它設計用於執行返回結果集的select語句,而不是返回結果集的數據操作語句。 請改用executeUpdate()方法,並檢查受影響的行數,以確定執行是否成功。

另外,也無需准備該語句,因為用戶極不可能彼此立即重復運行幾次。 而且您的代碼甚至沒有嘗試利用准備好的語句提供的優勢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM