sql >> Database >  >> RDS >> PostgreSQL

Preparedstatement invoegen in database - PSQL

Je hebt de geretourneerde waarde van PreparedStatement#execute() niet begrepen .

Lees aandachtig de javadoc:

Retouren:

true als het eerste resultaat een ResultSet . 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?




  1. Oracle:als tabel bestaat

  2. Hoe splits ik een begrensde tekenreeks in SQL Server zonder een functie te maken?

  3. Hoe verwijder je een unieke beperking in SQL?

  4. Een array met waarden verzenden naar de Oracle-procedure om te gebruiken in de WHERE IN-clausule