Sistema de Login Falho. Ajuda!

9 respostas
lucasgarofolo

eu tenho dois códigos, o código executável, um classe de conectar ao BD e uma classe de controle de ação.

meu botão de login, está assim,
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        LoginController lg = new LoginController();
        String senha = jTextField2.getText();
        String login = jTextField1.getText();
        lg.Checar(login, senha);
}

como podem ver, a senha nao está nem em password.

a conexão
public Connection getConexao(String driver, String urlConexao, String user, String pass) {
		try {
			Class.forName(driver);
			conn = (Connection)DriverManager.getConnection(urlConexao, user, pass);
		} catch (ClassNotFoundException e) {
			System.out.println("Exc: ControladorConexao - Driver nao encontrado.");
			System.out.println(e);
		} catch (SQLException e) {
			System.out.println("Exc: ControladorConexao - Erro ao criar uma nova conexao.");
			System.out.println(e);
		}
		return this.conn;
	}
o metódo Checar:
public void Checar(String login, String senha){
             
             try{
                 pstmt = (PreparedStatement) this.conn.prepareStatement("SELECT login,senha FROM usuario WHERE login=" +login+ " AND senha=" +senha);
                 ResultSet rs = (ResultSet) pstmt.executeQuery();
                  if ( rs.next() ){ 
                        if(login.equalsIgnoreCase(login) && senha.equals(senha)){
                            entrada.setVisible(true);
                        }
                  }   
              }catch(SQLException e){
                    JOptionPane.showMessageDialog(null,"Erro " +e);
             }
         
    }

o que há de errado ?

9 Respostas

UMC

posta o erro! que está dando

lucasgarofolo

no SQLException ta dando: com.mysql.jdbc.excepetions.MySQLSyntaxErrorException: Unknown column ‘lucas.lopes’ in ‘where clause’.

qeria saber se a lógica do login está certo ?

Tenkara_Kiddo

Olá Lucas,

troque

this.conn.prepareStatement("SELECT login,senha FROM usuario WHERE login=" +login+ " AND senha=" +senha);

por

this.conn.prepareStatement("SELECT login,senha FROM usuario WHERE login=? AND senha=?");
e adicione na linha de baixo, antes de executar o SQL

pstmt.setParameter(0, login);

pstmt.setParameter(1, senha);

provavelmente o statement está identificando lucas.lopes um campo de uma tabela, por isso troquei o uso para o setParameter();
não me lembro corretamente da sintaxe, mais qualquer coisa procure por setParameter da classe PreparedStatement

sobre a lógica do metodo checar() eu faria de um jeito diferente,

retornando uma variavel bool, mais ou menos assim

public bool Checar(String usuario, String senha){
         //verifica se existe um usuario no banco de dados com esse usuario e senha e se existe retorna true somente, senao false;
  }

espero ter ajudado, abraços;

lucasgarofolo

obrigado Kiddo, o erro que estava acusando foi solucionado,
mas está aparecendo outro.

java.sql.SQLException: Parameter index out of range (0 <1).

Tenkara_Kiddo

Tente trocar para

pstmt.setParameter(1, login);
pstmt.setParameter(2, senha);

provavelmente por que não tem o index 0
entrão vamos trocar para 1, 2

Tenkara_Kiddo

referencia

http://www.coderanch.com/t/307234/JDBC/java/java-sql-SQLException-Parameter-index

lucasgarofolo
certo, os Exception do SQL nao acusa mais nada,

muito obrigado, Kiddo,

mas agora acusou muitos erros.

Exception in thread AWT-EventQueue-0 java.lang.NullPointerException

at my.academia.LoginController.getCheca(LoginController.java:38)

at my.academia.Login.jButton1ActionPerformed(Login.java:118)

at my.academia.Login.access$000(Login.java:6)

at my.academia.Login$1.actionPerformed(Login.java:37)

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)

eu estou no caminho certo pelo menos ?
a lógica de checagem de login e senha, está certo?

obrigado pela atenção e desculpe a ignorancia, pois é meu primeiro projeto com login e senha :smiley:

Tenkara_Kiddo

Olá,
esse erro ocorre geralemente quando um objeto é nulo “java.lang.NullPointerException”
"null"
provavelmente a variavel entrada está nula
nisso eu não vou poder te ajudar com precisão, procure debugar a aplicação

e veja em qual linha ocorre o erro,
veja a variavel que está nula
e instancie a mesma onde lhe for necessario

*se entrada for um formulario ou componente de tela, instancie no construtor do seu projeto

Tenkara_Kiddo

Tenkara Kiddo:
Olá,
esse erro ocorre geralemente quando um objeto é nulo
"null"
provavelmente a variavel entrada está nula
nisso eu não vou poder te ajudar com precisão, procure debugar a aplicação

e veja em qual linha ocorre o erro,
veja a variavel que está nula
e instancie a mesma onde lhe for necessario

*se entrada for um formulario ou componente de tela, instancie no construtor do seu projeto

você está no caminho correto, so tente procurar mais exemplos de telas de login na internet.

Criado 13 de abril de 2011
Ultima resposta 13 de abr. de 2011
Respostas 9
Participantes 3