2012-10-12 66 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()