Por favor alguem me ajude eu ja fiz este codigo e ele acede á base de dados, o problema é que qualquer pessoa entra mesmo que nao
esteja inscrita na base de dados, ja andei muito as voltas mas nao consigo fazer com que o login seja de facto de clientes que estejam na base de dados
//AGORA AQUI ESTÁ MEU PROBLEMA, COMO FAÇO PARA VALIDAR USERNAME E PASSWORD???
//visto que tem que procurar na base de dados e ver se existe mxm essa password e username
String sql = "select * from login where Username='" +txtusername.getText()+ "' and Password= '"+ txtpassword.getText()+"'";
JOptionPane.showMessageDialog(null, "Username ou Password incorreta");
JOptionPane.showMessageDialog(null, "Bem vindo!");
}
}[/code]
O que vc precisa fazer é um método para verificar no banco, se o usuário existe ou não… pode ser um método booleano, se existir retorna true senão retorna false!
vc valida se o usuário deixou de informar os dados.
vc criou a sql.
mas vc não fez o mais importante: fazer a consulta no banco.
Vc tem que instanciar um Statement, que é quem vai executar as consultas, e fazer a consulta.
Faça algo assim, dentro do if:
Statement st = conn.createStatement(); //instância do statement
boolean retorno = st.executeQuery(sql); // executa a consulta e retorna true se teve retorno.
if (retorno){
//mensagem ok
}else{
//mensagem ero
}
vc tb pode fazer algo mais direto:
Statement st = conn.createStatement(); //instância do statement
if (st.executeQuery(sql)){ // executa a consulta e retorna true se teve retorno.
//mensagem ok
}else{
//mensagem ero
}
Esse Select pode sim encontrar um usuário numa tabela do banco (pelo que entendi, ela tem uma tabela para esses).
String sql = "select * from login where Username='" +txtusername.getText()+ "' and Password= '"+ txtpassword.getText()+"'";
//login = nome da tabela
//Username e Password = nome das colunas
A diferença é que vc fez com PreparedStatement e ela tá atribuindo direto o valor digitado à string.
Dá certo sim, Virgo. As duas formas. Vc só terá configurar exatamente para seu caso que tratar os retornos do Banco.
berg.pb o que eu quis dizer é que ela estava apenas executando um select, não verificando se existia ou não o usuário… haja visto que no código de exemplo que eu coloquei eu fiz o mesmo SELECT que ela estava fazendo…
Sem um método (booleano) que verifique se existe, ou não um usuário, e que retorne true ou false, a querie SELECT… de nada adianta
String sql = "SELECT * FROM tabela WHERE usuario = ? AND senha = ?";
Eu entendi o que vc quis dizer. A questão eh que o que a autora fez foi somente montar a String do sql, mas sequer tinha jogado na conexao. Por isso que na minha 1a resposta eu citei o Statement e sua Api.
Tudo certo berg.pb… na resposta onde eu coloquei o método de exemplo, quando eu escrevi que apenas o SELECT não verificava, era para a autora da pergunta e não para a sua resposta… pode ser isso que ficou meio confuso! mas no final acho que tanto eu quanto você fizemos a mesma coisa, e ajudamos de alguma forma!