Du har misforstået returværdien af PreparedStatement#execute()
.
Læs venligst javadoc:
omhyggeligtReturneringer:
true
hvis det første resultat er et ResultSet
objekt; false
hvis det første resultat er et opdateringstal, eller der ikke er noget resultat.
Det returnerer således - som fuldt forventet - false
på en INSERT
forespørgsel. Det returnerer kun true
på en SELECT
forespørgsel (som du dog normalt vil bruge executeQuery()
til i stedet som returnerer direkte et ResultSet
).
Hvis du er interesseret i de berørte rækker, skal du hellere bruge PreparedStatement#executeUpdate()
i stedet. Det returnerer en int
i henhold til javadoc:
Returneringer:
enten (1) rækkeantallet for SQL Data Manipulation Language (DML)-sætninger eller (2) 0 for SQL-sætninger, der ikke returnerer noget
En returværdi på 1 eller større ville så indikere en vellykket indsættelse.
Ikke-relateret til det konkrete problem:din kode lækker DB-ressourcer. Læs venligst omhyggeligt Hvor ofte skal Connection, Statement og ResultSet lukkes i JDBC?