Je hebt de geretourneerde waarde van PreparedStatement#execute() niet begrepen .
Lees aandachtig de javadoc:
Retouren:
trueals het eerste resultaat eenResultSet. is voorwerp;falseals 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?