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

Inserimento dell'istruzione preparata nel database - PSQL

Hai frainteso il valore di ritorno di PreparedStatement#execute() .

Si prega di leggere attentamente il javadoc:

Resi:

true se il primo risultato è un ResultSet oggetto; false se il primo risultato è un conteggio di aggiornamento o non ci sono risultati.

Restituisce quindi, come previsto, false su un INSERT interrogazione. Restituisce solo true su un SELECT query (per la quale tuttavia di solito vorresti usare executeQuery() invece che restituisce direttamente un ResultSet ).

Se sei interessato alle righe interessate, usa invece PreparedStatement#executeUpdate() invece. Restituisce un int come da javadoc:

Resi:

o (1) il conteggio delle righe per le istruzioni SQL Data Manipulation Language (DML) o (2) 0 per le istruzioni SQL che non restituiscono nulla

Un valore restituito pari o superiore a 1 indicherebbe quindi un inserimento riuscito.

Non correlato al problema concreto:il tuo codice perde risorse DB. Si prega di leggere attentamente Con quale frequenza devono essere chiusi Connection, Statement e ResultSet in JDBC?