Problema com método de acesso a banco de dados

2 respostas Resolvido
Luis_Prado

Oi, estou tentando criar um método que retorna um usuario a partir do login mas tá dando erro. O método é:

@Override
public Usuario recuperar(String login) {
    Usuario u = new Usuario();
    try(Connection c = DriverManager.getConnection("jdbc:postgresql://localhost/coursera","postgres","")){
        
        String sql ="SELECT * FROM usuario WHERE login = ?";
        PreparedStatement stm = c.prepareStatement(sql);
        ResultSet rs = stm.executeQuery();
            u.setLogin(rs.getString("login"));
            u.setEmail(rs.getString("email"));
            u.setNome(rs.getString("nome"));
            u.setSenha(rs.getString("senha"));
            u.setPontos(rs.getInt("pontos"));
        
    } catch (SQLException ex) {
        Logger.getLogger(UsuarioDAO.class.getName()).log(Level.SEVERE, null, ex);
    }
    return u;
}

o erro que dá é esse:

out 29, 2016 12:07:43 PM AcessoBancoDeDadosUsuario recuperar

GRAVE: null

org.postgresql.util.PSQLException: Nenhum valor especificado para parâmetro 1.

at org.postgresql.core.v3.SimpleParameterList.checkAllParametersSet(SimpleParameterList.java:249)

at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:275)

at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:432)

at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:358)

at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:171)

at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:119)

at AcessoBancoDeDadosUsuario.recuperar(AcessoBancoDeDadosUsuario.java:51)

at PrincipalTesteDAO.main(PrincipalTesteDAO.java:19)

2 Respostas

peczenyj
Solucao aceita

eu acho que faltou um stm.setString( 1 , login ) antes de executar a query.

ou o login vai entrar aonde? magica?

outra coisa, vc pode nao encontrar o usuario.

Luis_Prado

Obrigado! Eu ainda sou novo nisso! Muito boa a sugestão!!!

Criado 29 de outubro de 2016
Ultima resposta 29 de out. de 2016
Respostas 2
Participantes 2