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);
}
}
pst.setString(1, txtUsuario.getText());
pst.setString(2, txtSenha.getText());
1 curtida
mais o 2 e 4 não seria a coluna da tabela em que eu estou tentando pegar os dados
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 = ? "
2 curtidas
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.