PostgreSQL Java Row Index erhalten

Ovoxo

Mitglied
Hallo zusammen,

Ich habe eine PostgreSQL DB und probiere mit Java Werte in die DB einzufügen.
Für den PK nutze ich keine automation. Daher generiere ich den PK direkt im Insert.

Nun wollte ich diesen im Insert generierten PK als Return erhalten, jedoch ohne Erfolg.

Java:
PreparedStatement pstmt = dbConnection
                    .prepareStatement("insert into myTable"
                            + " (id, name "
                            + "VALUES((SELECT COUNT(*) FROM myTable) + 1, ?)");
            pstmt.setString(1, name);

            ResultSet rs = pstmt.executeQuery();

            int last_row_id = rs.getInt(1);
 
Also ich sehe da zwei Punkte:

a) Wenn Du ein ResultSet lesen willst, musst Du immer erst zu einem Datensatz gehen. Also erst ein rs.Next() geht zur ersten Row. Daher kann Dein Code so nicht funktionieren.

b) Dein INSERT Query gibt ja nichts zurück. Eine Möglichkeit wäre, Dein Statement zu erweitern und ein "RETURNING id" anzufügen. Dann wird das Feld id zurück gegeben. (Aber Achtung - das ist eine PostgreSQL Besonderheit. Ein MS SQL Server kann das z.B. nicht verstehen. Da wäre ein INSERT INTO xxx (... ) OUTPUT ... VALUES ... möglich.)
 

Neue Themen


Zurück
Oben