Estou tentando criar uma tela de login utilizando um JFrame e banco de dados mysql, mas só cai na exceção.
Se alguém poder me ajuda fico agradecido.
Segue abaixo o trecho de codigo…
private void fazerLogin(java.awt.event.ActionEvent evt) {
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/gerpro";
String usuario = "root";
String senha = "admin";
Connection con;
con = DriverManager.getConnection(url, usuario, senha);
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("SELECT (login, senha, departamento)FROM cadastro WHERE " +
"login='"+cxTxtCadLogin.getText()+"' AND senha='"+cxTxtCadSenha.getPassword()+"' AND " +
"departamento='"+comboCadDepartamento.getSelectedItem()+"'");
while (rs.next())
if ((cxTxtLogLogin.getText().equals(rs.getString("login")))&&
(cxTxtLogSenha.getPassword().equals(rs.getString("senha")))&&
(comboLogDepartamento.getSelectedItem().equals(rs.getString("departamento"))));
login.dispose();
}catch (ClassNotFoundException e){
JOptionPane.showMessageDialog(null, "Falha na conexão com o banco de dados.\n" + e.getMessage());
e.printStackTrace();
}catch (SQLException e){
JOptionPane.showMessageDialog(null, "Login Incorreto.\n" +
"Tente novamente.\n","Mensagem do Programa", JOptionPane.ERROR_MESSAGE);
e.printStackTrace();
}
}
Só uma dica. Não use Statement, use PreparedStatement pra não ter que ficar fazendo concatenação.
Como o furutani falou, poste o erro que está dando…
T+
wamarra
Olá furutani,
Tinha um erro no codigo “erro de execução”, pois coloquei um “;” na condição do “if”.
Só que agora quando aperto o botão OK não cai na exceção, mas também não acontece nada, como se não tivesse codigo algum.
Caso consiga identificar algum outro erro, por favor me mande.
Valeu!
Wesley Marra
wamarra
olá diego2005,
Só uma dica. Não use Statement, use PreparedStatement pra não ter que ficar fazendo concatenação.
Valeu a dica.
vou tentar o que me falou, caso dê certo eu posto aqui.
Abraço
Wesley Marra
diego2005
Com PreparedStatement você trocaria:
Statementst=con.createStatement(); ResultSetrs=st.executeQuery("SELECT (login, senha, departamento)FROM cadastro WHERE "+"login='"+cxTxtCadLogin.getText()+"' AND senha='"+cxTxtCadSenha.getPassword()+"' AND "+"departamento='"+comboCadDepartamento.getSelectedItem()+"'");
por:
PreparedStatementst=con.prepareStatement("SELECT login, senha, departamento FROM cadastro WHERE login = ? AND senha = ? AND departamento = ?");st.setString(1,cxTxtCadLogin.getText());st.setString(2,cxTxtCadSenha.getPassword());st.setString(3,comboCadDepartamento.getSelectedItem());ResultSetrs=st.executeQuery();
Espero que ajude...
T+
wamarra
Boa tarde diego2005,
Estou tentando fazer o que me falou, não sei se estou fazendo o correto, pois está dando "erro de compilação" na linha:
ps.setString(2,cxTxtLogSenha.getPassword());
Sendo que tambem tive que alterar o conteúdo do combo "comboLogDepartamento.getSelectedItem()" para uma String conforme a linha: