2012-10-12 99 views
4

我在java中編寫了一個簡單的CRUD應用程序,並且我有一個方法來選擇隨票據一起提供的Produkts。SQLException - 遊標狀態無效

這裏是我的代碼:

public Rechnung selectProdukte(int target){ 
    int tempProdukt; 
    int tempAnzahl; 
    try { 
     PreparedStatement ps1=hsqlmanager.getConnection().prepareStatement("SELECT produkt, anzahl from gekauftes_produkt " + 
       "WHERE rechnung= " + target + ";"); 
     //ps1.setInt(1, target); 
     //Query 1wird executiert 

     PreparedStatement ps2 = hsqlmanager.getConnection().prepareStatement("SELECT * FROM rechnung WHERE id= " + target + ";"); 
     //ps2.setInt(1, target); 
     ResultSet rs1 = ps1.executeQuery(); 
     ResultSet rs2 = ps2.executeQuery(); 
     Rechnung erg=new Rechnung(); 
     erg.setId(rs2.getInt(1)); 
     erg.setDatum(rs2.getDate(2)); 
     erg.setSumme(rs2.getDouble(3)); 
     while(rs1.next()){ 
      tempProdukt=rs1.getInt(1); 
      tempAnzahl=rs1.getInt(2); 
      erg.addGekauftTupel(tempProdukt, tempAnzahl); 
     } 
     ps1.close(); 
     ps2.close(); 
     return erg; 
    } catch(Exception e) { 
     log.error("Fehler in DAO Rechnung - selectProdukte: " + e); 
    } 
    return null; 
} 

當我按下按鈕來執行代碼我得到:

值java.sql.SQLException:無效的遊標狀態:標識符光標不 位於在UPDATE,DELETE,SET或GET語句中的行:; ResultSet定位在第一行之前

我檢查了數據庫,並且所有表和實體都存在。所以我的問題是:

這是什麼意思?

我很感謝您的回答!

PS .:我正在使用hsql db!

回答

10

你沒有訪問erg.setId(rs2.getInt(1));

之前調用 rs2.next()