Moin,
ich habe folgendes Problem: Nachdem ich einen neuen Datensatz in eine Tabelle der Datenbank hinzugefügt habe würde ich gerne den dafür von der DB erstellen Schlüssel erfahren. Also habe ich folgendes gemacht:
rausspringen tut er hier:
.
Meine Fehlermeldung:
Caused by: org.hsqldb.HsqlException: invalid cursor state: identifier cursor not positioned on row in UPDATE, DELETE, SET, or GET statement: ; ResultSet is empty!!!
Ich kriege es leider nicht selber gelöst hat jemand einen Ansatz oder Tip? Meine Alternative Lösung wäre mit nextVal() vorher den nächsten key rauszukriegen, was ich allerdings nicht so schön finde. Und ich der Meinung bin, dass getGeneratedKey() funktionieren sollte.
Gruß
Supra
ich habe folgendes Problem: Nachdem ich einen neuen Datensatz in eine Tabelle der Datenbank hinzugefügt habe würde ich gerne den dafür von der DB erstellen Schlüssel erfahren. Also habe ich folgendes gemacht:
Java:
public void insert(Spieltag spieltag) throws TurnierException
{
Connection con = DatenbankVerbindung.getInstance().stelleVerbindungHer();
PreparedStatement preparedStatement = null;
String query = "INSERT INTO SPIELTAG(bezeichnung,beginn,ende)VALUES(?,?,?)";
try
{
int zaehler = 1;
preparedStatement = con.prepareStatement(query);
preparedStatement.setString(zaehler++, spieltag.getSpieltagBezeichnung());
preparedStatement.setDate(zaehler++, getSqlDate(spieltag.getDatumStart()));
preparedStatement.setDate(zaehler++, getSqlDate(spieltag.getDatumEnde()));
preparedStatement.executeUpdate();
ResultSet rs = preparedStatement.getGeneratedKeys();
//if(rs.next())
rs.next();
// {
int key = rs.getInt(1);
spieltag.setId(key);
// }
insertReferenz(spieltag.getId(), spieltag.getSpiele(), con);
} catch (SQLException e)
{
e.printStackTrace();
throw new TurnierException(e.getMessage());
} finally
{
DatenbankVerbindung.getInstance().close(preparedStatement);
DatenbankVerbindung.getInstance().trenneVerbindung(con);
}
}
rausspringen tut er hier:
Java:
rs.next();
// {
int key = rs.getInt(1); // Hier
spieltag.setId(key);
// }
Meine Fehlermeldung:
Caused by: org.hsqldb.HsqlException: invalid cursor state: identifier cursor not positioned on row in UPDATE, DELETE, SET, or GET statement: ; ResultSet is empty!!!
Ich kriege es leider nicht selber gelöst hat jemand einen Ansatz oder Tip? Meine Alternative Lösung wäre mit nextVal() vorher den nächsten key rauszukriegen, was ich allerdings nicht so schön finde. Und ich der Meinung bin, dass getGeneratedKey() funktionieren sollte.
Gruß
Supra