Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

JDBC, query retorna false mas salva no banco

Estou executando a seguinte função em java:

public boolean insert(User user) throws SQLException{
        String sql = "insert into usuarios (nome, email, senha) values (?,?,?)";
        PreparedStatement instruction = this.connection.prepareStatement(sql);
        instruction.setString(1, user.getName());
        instruction.setString(2, user.getEmail());
        instruction.setString(3, user.getPassword());

        boolean result = instruction.execute();
        instruction.close();
        return result;
    }

o problema é que ele sempre retorna false em instruction.execute() mas se faço um select em usuários, aparece que ele foi cadastrado.

1 resposta
solução!

E aí, Vinícius! Tudo certo, cara? =)

O PreparedStamente possui alguns métodos para você executar uma query: execute(), executeQuery() e executeUpdate()`...

Vou deixar o execute() por último... Então, o executeQuery() pode ser utilizado quando você está querendo realizar um select no BD, e o seu retorno é um objeto do tipo ResultSet.

Já o executeUpdate() é utilizado quando você está realizando uma operação que altera algum registro do BD, ou seja, qualquer coisa diferente de select - insert, update ou delete, sacou? Ah, além disso, o retorno é um int com a quantidade de linhas alteradas no BD. =)

E o execute()? Esse cara pode ser utilizado para realizar qualquer operação, ou seja. ele pode substituir o executeQuery() e o executeUpdate(), mas seu retorno é sempre um boolean... Beleza? Ele devolve true quando você tenta realizar um select, mas devolve false quando é alguma outra operação... Portanto, eu não gosto de utilizar esse método... Tenta utilizar um dos outros dois, sacou? =D

Espero ter ajudado, mas qualquer dúvida não deixe de postar aqui, no fórum, para que possamos ajudá-lo! Beleza? =D

Abraços e bons estudos,

Fábio