HSQLDB getGeneratedKey() - Fehlermeldung

Supra

Bekanntes Mitglied
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:
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
 

Supra

Bekanntes Mitglied
Hallo VFL freak,

ich glaube wir stehen an der gleichen StellexD.
Eingefügt worden ist ja, aber das Resultset ist leer...

Irgendwie habe ich null Ahnung woher das kommt.
Gruß
 

Deros

Bekanntes Mitglied
probier mal
Java:
preparedStatement = con.prepareStatement(query, Statement.RETURN_GENERATED_KEYS);
 

Supra

Bekanntes Mitglied
Hallo Deros,

anscheinend hat diese Lösung funktioniert. Habe ich einfach Pech gehabt das es in meinen Fall nicht funktioniert und ich muss deine Lösung nehmen? Oder habe ich mich geirrt und ich habe das so noch nicht verwendet und meine Lösung war noch nicht 100% richtig?

Mit freundlichen Grüßen

Supra
 
Zuletzt bearbeitet:

Deros

Bekanntes Mitglied
Kein Plan ob du soetwas schonmal benutzt hast, du musst aber in diesem Falle ja schon der DB sagen, was du zurück haben möchtest. Ob das so klappz ist aber leider sehr stark von der eingesetzten DB abhängig.
 

Supra

Bekanntes Mitglied
Hmm das klingt Einleuchtend, ich hätte gedacht das getGeneratedtKeys() regelt dies von alleine.
Jetzt funktioniert es ja.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
thor_norsk SQLite Fehlermeldung Datenbankprogrammierung 4
S Fehlermeldung "Path to ... does not exist! (?) Datenbankprogrammierung 6
S Fehlermeldung - php Datenbankprogrammierung 10
L Derby/JavaFX Fehlermeldung Datenbankprogrammierung 3
A Fehlermeldung: JOIN FETCH expressions cannot be defined with an identification variable Datenbankprogrammierung 0
S HSQLDB Fehlermeldung für den Bildschirm Datenbankprogrammierung 3
D Oracle SQL Ergebnis anzeigen und Applet Fehlermeldung Datenbankprogrammierung 12
C Abfrageergebnis richtig, trotzdem Fehlermeldung Datenbankprogrammierung 11
A Fehlermeldung H2 Database Datenbankprogrammierung 3
V Fehlermeldung beim Insert Datenbankprogrammierung 16
A Java JDBC Programm bringt auf Unix Server Fehlermeldung Datenbankprogrammierung 4
A Fehlermeldung "Objekt bereits geschlossen" Datenbankprogrammierung 3
A Fehlermeldung: Keine Daten verfügbar Datenbankprogrammierung 2
B PrepareStatement "Insert into" fehlermeldung Datenbankprogrammierung 13
C Error in my_thread_global_end() - FehlerMeldung MySql? Datenbankprogrammierung 2
P Fehlermeldung "source not found" Datenbankprogrammierung 2
N Fehlermeldung bei SQL Abfrage Datenbankprogrammierung 5
J Fehlermeldung beim ausführeren dieses Befehles Datenbankprogrammierung 5
G Pool Exhausted Fehlermeldung Datenbankprogrammierung 7
P Fehlermeldung beim Erstellen einer neuen Tabelle Datenbankprogrammierung 2
M Daten werde gesetzt, aber trotzdem Fehlermeldung! Datenbankprogrammierung 3
A Datasource JNDI -Fehlermeldung Datenbankprogrammierung 2
G JDBC-Treiber-Fehlermeldung Datenbankprogrammierung 4
R insert in MySQL - Fehlermeldung Datenbankprogrammierung 2
W Fehlermeldung beim Ändern einer jdbTable Datenbankprogrammierung 5
G Fehlermeldung beim Zugriff auf SQL-Server-DB Datenbankprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben