PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Inserindo instrução preparada no banco de dados - PSQL


Você não entendeu o valor de retorno de PreparedStatement#execute() .

Leia atentamente o javadoc:

Devoluções:


true se o primeiro resultado for um ResultSet objeto; false se o primeiro resultado for uma contagem de atualização ou se não houver resultado.

Assim, ele retorna — como esperado — false em um INSERT inquerir. Ele retorna apenas true em um SELECT query (para a qual você normalmente gostaria de usar executeQuery() em vez disso, que retorna diretamente um ResultSet ).

Se você estiver interessado nas linhas afetadas, use PreparedStatement#executeUpdate() em vez de. Ele retorna um int conforme o javadoc:

Devoluções:


ou (1) a contagem de linhas para instruções SQL Data Manipulation Language (DML) ou (2) 0 para instruções SQL que não retornam nada

Um valor de retorno de 1 ou maior indicaria uma inserção bem-sucedida.

Não relacionado para o problema concreto:seu código está vazando recursos do banco de dados. Por favor, leia com atenção Com que frequência Connection, Statement e ResultSet devem ser fechados no JDBC?