Login com problema [RESOLVIDO]

6 respostas
lucaslzl

Bom dia,

eu criei um botão para fazer a verificação se a account e o password estão corretos para deixar ou não entrar no sistema. O problema é que quando você digite e erra a senha, na segunda tentativa, mesmo estando correto, ele diz que está incorreto e não abre o sistema, tendo assim que fechar e abrir de novo.

btnEntrar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				
				String login = "";
	            String password = "";
	            login = textField.getText();
	            password = new String(passwordField.getPassword());
	            int verif = 0; //verifica se abriu a tela
	            try
	            {       
	                while (con_login.r.next())
	                {
	                    if (login.equals(con_login.r.getString("logaccount")) 
	                            && (password.equals(con_login.r.getString("logpassword"))))
	                    {
	                        new Menu().setVisible(true);
	                        verif = 1;
	                        dispose();
	                    }
	                }
	                if (verif == 0)
	                {
	                	//this.setVisible(false);
	                    JOptionPane.showMessageDialog(null, "Usuario ou senha incorretos");
	                    //new Login().setVisible(true);
	                    //dispose();
	                    con_login.r.first();
	                }
	            }
	            catch (SQLException erro)
	            {
	                JOptionPane.showMessageDialog(null, "Ocorreu o erro: "+erro);
	            }
	            
			}
		});

6 Respostas

darklordkamui

facil… manda limpar as variaveis ao fim da validação que ira funcionar =P

no caso essa con_login

abraços

lucaslzl

Eu coloquei o valor “null” depois da verificação, e continua com o mesmo problema. A con_login é um objeto da classe Connect, que faz a conexão com o banco. Ela roda no banco verificando se existe algum registro com acc e pass iguais aos inseridos pelo usuário. Na parte con_login.r.first(); ele volta para o primeiro registro.

btnEntrar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				
				String login = "";
	            String password = "";
	            login = textField.getText();
	            password = new String(passwordField.getPassword());
	            int verif = 0; //verifica se abriu a tela
	            try
	            {       
	                while (con_login.r.next())
	                {
	                    if (login.equals(con_login.r.getString("logaccount")) 
	                            && (password.equals(con_login.r.getString("logpassword"))))
	                    {
	                        new Menu().setVisible(true);
	                        verif = 1;
	                        dispose();
	                    }
	                }
	                if (verif == 0)
	                {
	                	//this.setVisible(false);
	                    JOptionPane.showMessageDialog(null, "Usuario ou senha incorretos");
	                    //new Login().setVisible(true);
	                    //dispose();
	                    //con_login.r.first();
	                }
	                login = null;
	                password = null;
	            }
	            catch (SQLException erro)
	            {
	                JOptionPane.showMessageDialog(null, "Ocorreu o erro: "+erro);
	            }
	            
			}
		});
E

Talvez seria o caso de invés de colocar a variavel con_login como “” e não com null.

Testa ae.

lucaslzl

con_login não é uma variável

al.barbosa

con_login.r é um ResultSet ? Provavelmente está acontecendo isso porque você está dando next() até chegar ao fim do ResultSet. Então na segunda vez que tenta fazer o login não consegue mais percorrer o ResultSet com o while (con_login.r.next()) porque já está no fim.

Você pode tentar o seguinte: ponha um

con_login.r.beforeFirst();

antes do while. Assim ele irá sempre mover para o início do ResultSet.

lucaslzl

Muito obrigado al.barbosa, funcionou perfeitamente. E sim, era um resultset, provavelmente eu deveria ter sido mais claro. Não sabia desse método “beforeFirst()”.

Obrigado a todos pela ajuda.

Criado 6 de julho de 2012
Ultima resposta 6 de jul. de 2012
Respostas 6
Participantes 4