Estou fazendo uma tela de login, só que estou tendo um problema que é quando eu pego o que ta escrito no meu JtextField e levo para minha função de verificação ele não funciona, quando eu crio uma variável String ou mesmo ponho uma string direto no parâmetro da função ele dá certo, ou seja o problema é com a variável, o que pode ser e como posso resolver? segue uma parte do código para ficar mais claro.
PS: eu ja fiz sem o for tbm apenas pegando a posição 0 da lista mas também dá erro quando chega na linha que faz isso
public static Boolean Botao_Login(String login, String password){ //este "login" vem do JtextField, assim como o password vem de um passwordField
boolean key = false;
//System.out.println(login +" "+ password);
String teste = login; //quando eu faço uma string aqui ele funciona, porem quando eu uso o login não vai, nem com o "teste" recebendo, nem diretamente no parâmetro
String teste2 = "123";
try {
List<Login> clienteList = Login_DB.search_by_login_Prepared_Statement(teste);
System.out.println("TESTE");
for(int i = 0; i < clienteList.size(); i++) {//Ele começa a dar erro nessa linha, porém quando é uma string normal criada nesse metodo funciona.
Login C = clienteList.get(i);
if(teste.equals(C.getLogin()) && teste2.equals(C.getPassword())){
return key = true;
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
JOptionPane.showMessageDialog(null, "ERROR", "Aviso", JOptionPane.ERROR_MESSAGE);
}
return key;
}
como é passado o parâmetro do Jframe
if(Login_Button.Botao_Login(txtLogin.getText(), new String(txtpassword.getPassword())) == true){
JOptionPane.showMessageDialog(null, "Login realizado com sucesso!", "Mensagem", JOptionPane.DEFAULT_OPTION);
}else {
JOptionPane.showMessageDialog(null, "Usuário ou senha incorretos!", "Aviso", JOptionPane.WARNING_MESSAGE);
}
Segue a função de busca
public static List<Login> search_by_login_Prepared_Statement (String login) {
String sql = "SELECT login, password FROM DB_Estoque.Login_Table where login like ?";
Connection conn = Conexao.getConnection(); //Abrindo conexão
List<Login> ListaLogin = new ArrayList<>();
try {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, login);
ResultSet rs = ps.executeQuery();
while(rs.next()) {
ListaLogin.add(new Login(rs.getString("login"), rs.getString("password")));
}
Conexao.Fechar_Conexao(conn, ps, rs); //Fechando conexão
return ListaLogin;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}