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?