Como fazer login, verificar se o usuário existe no banco?
15 respostas
F
felipevs
Pessoal, ja tentei mas estou sem sucesso… como faço para verificar se o usuário existe no banco ?
efetuar login JAVA SE.
publicvoidmetodo_login(Stringlogin,Stringsenha)throwsSQLException{try{Connectionconn=null;StringSQL="select * from tb_mesada where login= ? and senha= ?";PreparedStatementstmt=null;ResultSetres=stmt.executeQuery(SQL);while(res.next()){Stringnome=res.getString(login);Stringpassword=res.getString(senha);if(nome.equalsIgnoreCase(login)&&password.equalsIgnoreCase(senha)){System.out.println("SSIMM");}}JOptionPane.showMessageDialog(null,"Login efetuado.");}catch(Exceptionio){System.out.println(io.toString());JOptionPane.showMessageDialog(null,"Não foi possível.");}}
Amigo, sou novo no fórum e em java
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
alexfe
Vc não está setando os parametros para consulta da formar correta e tambem está comparando uma variavel com ela mesma
F
felipevs
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,
publicvoidvalidaLogin(Stringnome,Stringsenha){PreparedStatementps=null;Connectionc=null;ResultSetrs=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çaops.setString(2,senha);//valor do segundo ponto de interrogaçaors=ps.executeQuery();while(rs.next()==true){System.out.println("SIM");}}catch(SQLExceptionex){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
felipevs
Ficou assim vejam:
Mas ta retornando um erro NullPointerExceptio.
publicvoidmetodo_login(Stringlogin,Stringsenha)throwsSQLException{try{PreparedStatementps=null;Connectionc=null;ResultSetrs=null;ps=(PreparedStatement)c.prepareStatement("SELECT * FROM tb_mesada WHERE login = ? and senha = ?");ps.setString(1,login);//valor do primeiro ponto de interrogaçaops.setString(2,senha);//valor do segundo ponto de interrogaçaors=ps.executeQuery();while(rs.next()==true){Stringnome=rs.getString(login);Stringpassword=rs.getString(senha);if(login.equalsIgnoreCase(nome)&&password.equalsIgnoreCase(senha)){JOptionPane.showMessageDialog(null,"Login Efetuado com sucesso.");}}JOptionPane.showMessageDialog(null,"Login efetuado.");}catch(Exceptionio){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
felipevs
Erro nessa linha:
//Linha 58ps=(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
felipevs
eu chamo o metodo de conexão quando pressiono o botão efetuar login.
privatevoidefetuar_loginActionPerformed(java.awt.event.ActionEventevt){ConnectionFactoryconf=newConnectionFactory();conf.getConnection();// Inicia conexão com o banco.Stringlogin="felipevs";Stringsenha="123456";try{conf.metodo_login(login,senha);}catch(SQLExceptionex){System.out.println("Deu erro para chamar o metodo.");}}
F
felipevs
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
felipevs
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.
publicvoidmetodo_login(Stringlogin,Stringsenha)throwsSQLException{try{Connectionc=(Connection)DriverManager.getConnection("jdbc:mysql://localhost:3306/MyNewDataBase","root","admin");;ResultSetrs=null;PreparedStatementps=(PreparedStatement)c.prepareStatement("SELECT * FROM tb_mesada WHERE login = ? and senha = ?");ps.setString(1,login);//valor do primeiro ponto de interrogaçaops.setString(2,senha);//valor do segundo ponto de interrogaçaors=ps.executeQuery();while(rs.next()==true){Stringnome=rs.getString(1);Stringpassword=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
felipevs
eu ja ouvi falar em hibernate aqui no fórum, ele serve para esse tipo de coisa é ?