Vous avez mal compris la valeur de retour de PreparedStatement#execute()
.
Veuillez lire attentivement le javadoc :
Renvois :
true
si le premier résultat est unResultSet
objet;false
si le premier résultat est un décompte de mise à jour ou s'il n'y a pas de résultat.
Il renvoie donc — comme prévu — false
sur un INSERT
requête. Il renvoie uniquement true
sur un SELECT
requête (pour laquelle vous aimeriez cependant généralement utiliser executeQuery()
à la place qui retourne directement un ResultSet
).
Si vous êtes intéressé par les lignes concernées, utilisez plutôt PreparedStatement#executeUpdate()
Au lieu. Il renvoie un int
selon le javadoc :
Renvois :
soit (1) le nombre de lignes pour les instructions SQL Data Manipulation Language (DML) ou (2) 0 pour les instructions SQL qui ne renvoient rien
Une valeur de retour de 1 ou plus indiquerait alors une insertion réussie.
Non lié au problème concret :votre code fuit les ressources de la base de données. Veuillez lire attentivement À quelle fréquence doit-on fermer Connection, Statement et ResultSet dans JDBC ?