Como testar se o usuario está no BD e se a senha ta correta!

5 respostas
A

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?

5 Respostas

C

Faça assim:

public boolean verificaUser(Usuario usuario) {
 
   //restante do código...
  
   ResultSet rs = stmt.executeQuery(); 

    while(rs.next()) {
     
       String login = rs.getString("Login"); //Nome da coluna no banco
       String senha = rs.getString("Senha"); //Nome da coluna no banco
        
       if(usuario.getLogin().equals(login) && usuario.getSenha().equals(senha)) {
             return true;
        }
     }
}
A

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

Você debugou? Pode me dizer em que linha está dando o erro?

A

Quando eu debuguei deu esses dois erros:

<blockquote>java.sql.SQLException: No suitable driver

at java.sql.DriverManager.getConnection(DriverManager.java:545)

at java.sql.DriverManager.getConnection(DriverManager.java:171)

at br.com.caep.imp.Usuario.verificaUser(Usuario.java:32)

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)
java.lang.NullPointerException

at br.com.caep.imp.Usuario.verificaUser(Usuario.java:37)

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)

</blockquote>
C

Seu driver está no classpath?

Criado 8 de fevereiro de 2007
Ultima resposta 12 de fev. de 2007
Respostas 5
Participantes 2