public void logar(){
String sql="select * from usuarios where nome = ? and senha = ? ";
try {
pst = conexao.prepareStatement(sql);
pst.setString(2, txtUsuario.getText());
pst.setString(4, txtSenha.getText());
rs = pst.executeQuery();
if(rs.next()){
principal principal = new principal();
principal.setVisible(true);
this.dispose();
conexao.close();
}else{
JOptionPane.showMessageDialog(null, "Usuario ou Senha invalido");
}
} catch(Exception e){ e.printStackTrace();
JOptionPane.showMessageDialog(null, e);
}
}
Estou tentando fazer uma consulta no banco de dados para uma tela de login, porem sempre que clico no botão de login aparece o seguinte erro java.sql.SQLException: Parameter index out of range (4> number of parameters, which is 2)
4 Respostas
1 like
pst.setString(1, txtUsuario.getText());
pst.setString(2, txtSenha.getText());
mais o 2 e 4 não seria a coluna da tabela em que eu estou tentando pegar os dados
2 likes
Mas…
Não. não estás a pegar dados nenhuns, estás a escrever no prepared statement. 1 e 2 são a ordem das interrogações na String "select * from usuarios where nome = ? and senha = ? "
Você não está consumindo dados e sim passando parâmetros para uma consulta que precisa de 2 parâmetros, que são no caso o índice 1 e 2.
O código em questão faz com que o SQL gerado no final para consulta em banco tenha a substituação dos ? pelos valores que são passados.
Quando você aponta o índice de valor 4 ele acusa o erro pois o seu SQL só tem 2 posições de índice, como o 4 está fora do range ele lança uma exceção.
Criado 8 de novembro de 2022
Ultima resposta 8 de nov. de 2022
Respostas 4
Participantes 3
Alura O que é Python? — um guia completo para iniciar nessa linguagem de programação Acesse agora o guia sobre Python e inicie sua jornada nessa linguagem de programação: o que é e para que serve, sua sintaxe e como iniciar nela!
Casa do Codigo SQL: Uma abordagem para bancos de dados Oracle Por Eduardo Goncalves — Casa do Codigo