Como testar se o usuario está no BD e se a senha ta correta!
5 respostas
A
arthurthiagoPJ
Fala galera…
eu que eu tow aprendendo banco de dados por agora… Então tow com algumas dúvidas tipo… como que faz pra pegar os resultados e achar o correto?
public boolean verificaUser() throws SQLException, IOException{
System.out.println("Carregando o Driver JDBC/ODBC...");
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
System.out.println("Conectando-se ao banco de dados CAEP...");
con = DriverManager.getConnection("jdbc:odbc:caep","regina","lcaep");
DatabaseMetaData dmd = con.getMetaData();
System.out.println("Conectado a: "+ dmd.getURL());
System.out.println("Driver: "+ dmd.getDriverName());
System.out.println("Versão: "+ dmd.getDriverVersion());
String sql = "SELECT * FROM " + tabGrupo + " WHERE Nome = ?";
PreparedStatement stmt = con.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
//O que eu faço a partir daqui para testar se o usuário está
//habilitado a entrar no programa?
} catch (Exception e) {
e.printStackTrace();
}
}
tem que usar o método next() da classe ResultSet? como que eu faço para achar o resultado e comparar com o nome que o usuário passou?
publicbooleanverificaUser(Usuario usuario) {//restantedocódigo...
ResultSetrs=stmt.executeQuery(); while(rs.next()) {Stringlogin=rs.getString("Login"); //Nome da coluna no bancoStringsenha=rs.getString("Senha"); //Nome da coluna no bancoif(usuario.getLogin().equals(login) && usuario.getSenha().equals(senha)) {returntrue;}}}
A
arthurthiagoPJ
Pois então… agora tah dando outro erro:
(Erro completo)
java.sql.SQLException: [Microsoft][Driver ODBC para Microsoft Access]Campo COUNT incorreto
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
at sun.jdbc.odbc.JdbcOdbc.SQLExecute(JdbcOdbc.java:3150)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.execute(JdbcOdbcPreparedStatement.java:214)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeQuery(JdbcOdbcPreparedStatement.java:89)
at br.com.caep.imp.Usuario.verificaUser(Usuario.java:42)
at br.com.caep.gui.Login.btnConectMouseClicked(Login.java:170)
at br.com.caep.gui.Login.access$000(Login.java:16)
at br.com.caep.gui.Login$1.mouseClicked(Login.java:94)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:212)
at java.awt.Component.processMouseEvent(Component.java:5491)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3901)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1778)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
e ai vai o código da conexão que está agora:
public boolean verificaUser() throws SQLException, IOException{
System.out.println("Carregando o Driver JDBC/ODBC...");
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
System.out.println("Conectando-se ao banco de dados CAEP...");
con = DriverManager.getConnection("jdbc:odbc:logincaep","","");
} catch (Exception e) {
e.printStackTrace();
}
DatabaseMetaData dmd = con.getMetaData();
System.out.println("Conectado a: "+ dmd.getURL());
System.out.println("Driver: "+ dmd.getDriverName());
System.out.println("Versão: "+ dmd.getDriverVersion());
String sql = "SELECT * FROM " + tabGrupo + " WHERE Nome = ?";
PreparedStatement stmt = con.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
//Irá procurar se o usuário está no banco e se a senha bate
while (rs.next()) {
String testelogin = rs.getString("Login");
String testesenha = rs.getString("Senha");
if (senha.equals(testesenha) && login.equals(testelogin))
stmt.close();
rs.close();
return true;
}
stmt.close();
rs.close();
return false;
}
OBS:login e senha são variáveis de instância da classe Usuario e o método verificaUser() fica nesta classe.
C
CarneiroPJ
Você debugou? Pode me dizer em que linha está dando o erro?