PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Insertion d'une instruction préparée dans la base de données - PSQL

Vous avez mal compris la valeur de retour de PreparedStatement#execute() .

Veuillez lire attentivement le javadoc :

Renvois :

true si le premier résultat est un ResultSet 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 ?