sql >> Base de Datos >  >> RDS >> PostgreSQL

Insertar declaración preparada en la base de datos - PSQL

No entendiste el valor de retorno de PreparedStatement#execute() .

Lea atentamente el javadoc:

Devoluciones:

true si el primer resultado es un ResultSet objeto; false si el primer resultado es un recuento de actualizaciones o no hay ningún resultado.

Por lo tanto, devuelve, como se esperaba, false en un INSERT consulta. Solo devuelve true en un SELECT consulta (para la cual, sin embargo, generalmente le gustaría usar executeQuery() en cambio, que devuelve directamente un ResultSet ).

Si está interesado en las filas afectadas, utilice PreparedStatement#executeUpdate() en cambio. Devuelve un int según el javadoc:

Devoluciones:

ya sea (1) el recuento de filas para declaraciones SQL Data Manipulation Language (DML) o (2) 0 para declaraciones SQL que no devuelven nada

Un valor de retorno de 1 o mayor indicaría una inserción exitosa.

No relacionado al problema concreto:su código está filtrando recursos DB. Lea detenidamente ¿Con qué frecuencia se deben cerrar Connection, Statement y ResultSet en JDBC?