Como fazer login, verificar se o usuário existe no banco?

15 respostas
F

Pessoal, ja tentei mas estou sem sucesso… como faço para verificar se o usuário existe no banco ?
efetuar login JAVA SE.

public void metodo_login(String login, String senha) throws SQLException {

        try {


            Connection conn = null;
            String SQL = "select * from tb_mesada where login= ? and senha= ?";
            PreparedStatement stmt = null;
            ResultSet res = stmt.executeQuery(SQL);
            while (res.next()) {
                String nome = res.getString(login);
                String password = res.getString(senha);
                if (nome.equalsIgnoreCase(login) && password.equalsIgnoreCase(senha)) {
                    System.out.println("SSIMM");
                }
            }
            JOptionPane.showMessageDialog(null, "Login efetuado.");
        } catch (Exception io) {
            System.out.println(io.toString());
            JOptionPane.showMessageDialog(null, "Não foi possível.");
        }

    }

15 Respostas

luis.kaufmann.silva

Amigo, sou novo no fórum e em java :slight_smile:
mas você pode por o erro gerado no forum, e de antemão, os valoes “?” não tenque ser setados por um metodo ou coisa assim?
vlw :smiley:

alexfe

Vc não está setando os parametros para consulta da formar correta e tambem está comparando uma variavel com ela mesma

F

ops! a comparação do nome foi só um errinho de calculo aauahauh
mas e aew… tem como vc colocar o trexo do código onde errei… tou a um tempao aki tentando e nada…

cardosao

Ola boa noite,

public void validaLogin( String nome, String senha  ){

       PreparedStatement ps = null;
       Connection c = null ;
       ResultSet rs = null;
       try {
            c = super.getConexaoBD();
            ps = c.prepareStatement("SELECT * FROM tb_mesada WHERE login = ? and senha = ?");
            ps.setString(1, nome); //valor do primeiro ponto de interrogaçao
            ps.setString(2, senha);//valor do segundo ponto de interrogaçao
            rs = ps.executeQuery(); 
            while ( rs.next() == true ) {
                System.out.println("SIM");
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
         finally {
            this.closeConnection(ps, c);
       }
    }

[]s

alexfe

Tah agora vc faz a comparação dentro do while. Na verdade esse tipo de programação retorna um conjunto de registro como é login de usuario a consulta deve retornar apenas um resultado se for encontrado, mas tente dessa forma que vc está fazendo, tem que começar por ai e depois passar a usar Frameworks como Hibernate e JPA.

Agora faça a comparação dentro do while

F

Ficou assim vejam:
Mas ta retornando um erro NullPointerExceptio.

public void metodo_login(String login, String senha) throws SQLException {

      try {


           PreparedStatement ps = null;
    Connection c = null ;
    ResultSet rs = null;

      
         ps = (PreparedStatement) c.prepareStatement("SELECT * FROM tb_mesada WHERE login = ? and senha = ?");
         ps.setString(1, login); //valor do primeiro ponto de interrogaçao
         ps.setString(2, senha);//valor do segundo ponto de interrogaçao
         rs = ps.executeQuery();
         while ( rs.next() == true ) {
                String nome = rs.getString(login);
                String password = rs.getString(senha);
                if (login.equalsIgnoreCase(nome) && password.equalsIgnoreCase(senha)) {
                   JOptionPane.showMessageDialog(null,"Login Efetuado com sucesso.");
                }
         }

          
            JOptionPane.showMessageDialog(null, "Login efetuado.");
        } catch (Exception io) {
            System.out.println(io.toString());
            JOptionPane.showMessageDialog(null, "Não foi possível.");
        }

    }
alexfe

Posta o log de erro, e em qual linha ele indica que está dando o erro ?

Cara olha seu objeto Connection vc não está abrindo a conexão com o banco de dados, ele está null

F

Erro nessa linha:

//Linha 58
     ps = (PreparedStatement) c.prepareStatement("SELECT * FROM tb_mesada WHERE login = ? and senha = ?");

Log de erro.

java.lang.NullPointerException
        at br.controledemesada.ConnectionFactory.metodo_login(ConnectionFactory.java:58)
        at br.controledemesada.TelaInicialMesada.efetuar_loginActionPerformed(TelaInicialMesada.java:263)
        at br.controledemesada.TelaInicialMesada.access$000(TelaInicialMesada.java:26)
        at br.controledemesada.TelaInicialMesada$1.actionPerformed(TelaInicialMesada.java:79)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6267)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6032)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
java.lang.NullPointerException
CONSTRUÍDO COM SUCESSO (tempo total: 8 segundos)
alexfe

Cara olha seu objeto Connection vc não está abrindo a conexão com o banco de dados antes de fazer a consulta

F

eu chamo o metodo de conexão quando pressiono o botão efetuar login.

private void efetuar_loginActionPerformed(java.awt.event.ActionEvent evt) {                                              
       ConnectionFactory conf = new ConnectionFactory();
       conf.getConnection(); // Inicia conexão com o banco.

       String login = "felipevs";
       String senha = "123456";
        try {
            conf.metodo_login(login, senha);
        } catch (SQLException ex) {
            System.out.println("Deu erro para chamar o metodo.");
        }



    }
F

será que o erro nao eh pq estou passando por parametro do metodo o mesmo nome do campo no banco ?

alexfe

olha só Connection c = null ;

este objeto tem que receber a conexão com o banco

F

Funcionooouuu =)
começou a da erro no getString(login); mas eu mudei para gerString(1);
e funcionou... junto com aquela dica para abrir conexão que vc deu
muito obrigado cara..valeu mesmo

Ficou assim... so falto fazer uns tratamentos ...
obrigado.

public void metodo_login(String login, String senha) throws SQLException {

      try {
     
    Connection c = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/MyNewDataBase", "root", "admin"); ;
    ResultSet rs = null;

      
         PreparedStatement ps = (PreparedStatement) c.prepareStatement("SELECT * FROM tb_mesada WHERE login = ? and senha = ?");
         ps.setString(1, login); //valor do primeiro ponto de interrogaçao
         ps.setString(2, senha);//valor do segundo ponto de interrogaçao
         rs = ps.executeQuery();

         while ( rs.next() == true ) {
                String nome = rs.getString(1);
                String password = rs.getString(2);

                if (login.equalsIgnoreCase(nome) && password.equalsIgnoreCase(senha)) {
                   JOptionPane.showMessageDialog(null,"Login Efetuado com sucesso.");
                }
         }
alexfe

Isso mesmo, vc não estava passando a conexão para o objeto reponsavel por fazer a instrução sql.
Porque vc não usa Hibernate e JPA ???

F

eu ja ouvi falar em hibernate aqui no fórum, ele serve para esse tipo de coisa é ?

Criado 27 de março de 2011
Ultima resposta 27 de mar. de 2011
Respostas 15
Participantes 4