sql >> Database teknologi >  >> RDS >> PostgreSQL

Indsættelse af forberedt erklæring til database - PSQL

Du har misforstået returværdien af ​​PreparedStatement#execute() .

Læs venligst javadoc:

omhyggeligt

Returneringer:

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?




  1. Top 30 mest nyttige Concurrent Manager-forespørgsler

  2. Fejl ved brug af en OLAP-forbindelse:MSOLAP-udbyderen er ikke registreret på den lokale maskine...

  3. Min PostgreSQL-database er løbet tør for diskplads

  4. Hvordan sikkerhedskopierer man en postgresql-database fra psql?