PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Einfügen einer vorbereiteten Anweisung in die Datenbank - PSQL

Sie haben den Rückgabewert von PreparedStatement#execute() falsch verstanden .

Bitte lesen Sie das Javadoc sorgfältig durch:

Rückgabe:

true wenn das erste Ergebnis ein ResultSet ist Objekt; false wenn das erste Ergebnis eine Aktualisierungszählung ist oder es kein Ergebnis gibt.

Es gibt also – wie erwartet – false zurück auf einem INSERT Anfrage. Es gibt nur true zurück auf ein SELECT Abfrage (für die Sie jedoch normalerweise executeQuery() verwenden möchten stattdessen wird direkt ein ResultSet zurückgegeben ).

Wenn Sie an den betroffenen Zeilen interessiert sind, verwenden Sie lieber PreparedStatement#executeUpdate() stattdessen. Es gibt ein int zurück gemäß Javadoc:

Rückgabe:

entweder (1) die Zeilenanzahl für DML-Anweisungen (SQL Data Manipulation Language) oder (2) 0 für SQL-Anweisungen, die nichts zurückgeben

Ein Rückgabewert von 1 oder größer würde dann eine erfolgreiche Einfügung anzeigen.

Nicht verwandt zum konkreten Problem:Ihr Code verliert DB-Ressourcen. Bitte sorgfältig lesen Wie oft sollten Connection, Statement und ResultSet in JDBC geschlossen werden?