Je hebt de geretourneerde waarde van PreparedStatement#execute()
niet begrepen .
Lees aandachtig de javadoc:
Retouren:
true
als het eerste resultaat eenResultSet
. is voorwerp;false
als het eerste resultaat een updatetelling is of als er geen resultaat is.
Het retourneert dus — zoals volledig verwacht — false
op een INSERT
vraag. Het retourneert alleen true
op een SELECT
query (waarvoor u echter gewoonlijk executeQuery()
wilt gebruiken in plaats daarvan die direct een ResultSet
. retourneert ).
Als u geïnteresseerd bent in de betreffende rijen, gebruikt u liever PreparedStatement#executeUpdate()
in plaats van. Het retourneert een int
volgens de javadoc:
Retouren:
ofwel (1) het aantal rijen voor SQL Data Manipulation Language (DML)-instructies of (2) 0 voor SQL-instructies die niets retourneren
Een retourwaarde van 1 of hoger zou dan wijzen op een succesvolle invoeging.
Niet gerelateerd voor het concrete probleem:uw code lekt DB-bronnen. Lees aandachtig Hoe vaak moeten Connection, Statement en ResultSet worden gesloten in JDBC?