sql >> Databasteknik >  >> RDS >> PostgreSQL

Infogar preparerat statement till databasen - PSQL

Du missförstod returvärdet för PreparedStatement#execute() .

Läs noggrant javadoc:

Retur:

true om det första resultatet är en ResultSet objekt; false om det första resultatet är en uppdateringsräkning eller om det inte finns något resultat.

Den returnerar alltså - som helt förväntat - false på en INSERT fråga. Den returnerar endast true på en SELECT fråga (som du dock vanligtvis vill använda executeQuery() för istället som direkt returnerar en ResultSet ).

Om du är intresserad av de berörda raderna, använd hellre PreparedStatement#executeUpdate() istället. Den returnerar en int enligt javadoc:

Retur:

antingen (1) radantalet för SQL Data Manipulation Language (DML)-satser eller (2) 0 för SQL-satser som inte returnerar något

Ett returvärde på 1 eller högre skulle då indikera en lyckad infogning.

Orelaterat till det konkreta problemet:din kod läcker DB-resurser. Vänligen läs noggrant Hur ofta ska Connection, Statement och ResultSet stängas i JDBC?




  1. Hämtar en rad, en kolumn med PDO

  2. Syntetisk datagenerering

  3. Hur får jag min, median och max från min fråga i postgresql?

  4. Hur man aktiverar spårning i oracle apps r12