4

私は Java で単純な CRUD アプリケーションをコーディングしており、請求書に付属する製品を選択する方法があります。

これが私のコードです:

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 を使用しています!

4

1 に答える 1

10

rs2.next()アクセスする前に電話していないerg.setId(rs2.getInt(1));

于 2012-10-12T21:19:52.080 に答える