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?