[RESOLVIDO]Problemas com para logar

20 respostas
Furyeyes

Galera é o seguinte..
criei uma tabela para gravar os usuarios e suas senhas para acessar meu programa..
para alterar e criar registro ele funciona bem

mas quando vou fazer a verificação na tela de login dá erro
de sintaxe de Sql mas eu não sei qual o erro..
segue uns trechos do programa responsavel por tudo isso

Aqui é a verificação do login

if(e.getSource()==login || e.getSource()==jtSenha){			
		
			Usuario user = new Usuario();
			Usuario user1 = new Usuario();
			
			user.setLogin(jtLogin.getText());
			user.setSenha(jtSenha.getSelectedText());
			user1 = BancoDeDados.verificaUser(user);
			
			if(jtLogin.getText().equals(user1.getLogin()) && new String(jtSenha.getPassword()).equals(user1.getSenha())){
				JOptionPane.showMessageDialog(null, "Bem vindo\n " + user1.getNome());
				if(user1.getAcesso().equals("parc")){				
					JFrame jCadastro = new TelaCadastro();
					jCadastro.setVisible(true);	
					dispose();
					TelaCadastro.bhome.setVisible(false);
					TelaCadastro.bquarto.setVisible(false);
				}
				else{
					JFrame jHome = new TelaHome();
					jHome.setVisible(true);	
					dispose();
			   }	
			}
			else{
				JOptionPane.showMessageDialog(null,"Senha ou login incorretos","Erro login",JOptionPane.ERROR_MESSAGE);
				jtLogin.setText(null);
				jtSenha.setText(null);
			}
		}

Aqui é a parte onde faço a pesquisa do login

public static Usuario verificaUser(Usuario usuario){
		try{
			String sql = "SELECT * FROM usuario WHERE Login= "+usuario.getLogin()+"AND Senha="+usuario.getSenha();
			//Usuario usuario1 = null;
			
			stm = conexao.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY );
			rs = stm.executeQuery();
			if(rs != null){	
				while(rs.next()){
					usuario.setLogin(rs.getString("Login"));
					usuario.setSenha(rs.getString("Senha"));
					usuario.setNome(rs.getString("Nome"));
					usuario.setAcesso(rs.getString("Acesso"));
					
					rs.close();
					stm.close();
					JOptionPane.showMessageDialog(null,"usuario verificado", "Login", JOptionPane.INFORMATION_MESSAGE);
					return usuario;	
				}
			}
				
		}catch(SQLException e4){
			e4.printStackTrace();
			JOptionPane.showMessageDialog(null,"Erro: "+e4 , "Cadastro", JOptionPane.ERROR_MESSAGE);
		}
		return null;
	}

me ajudem aiii

o erro é: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Senha=null' at line 1[size=18] [/size]

20 Respostas

Hebert_Coelho

Veja a mensagem de erro. está falando que vocÊ está com erro de sintax.

Tente colocar um espaço antes do AND

Login= “+usuario.getLogin()+” AND

Furyeyes

Arrumei parou de dar erro de sintaxe e apareceu outro

Unknown column ‘roliveira’ in ‘where clause’

Mas esse roliveira é o meu login, não coluna
Oque será que houve agora?

Hebert_Coelho

Você não colocou as ’ (aspas ao redor do login) ai ele tenta procurar um valor com aquele nome.

Uma coisa que vc pode fazer é ver qual o sql que está esndo executado e tentar rodar na ide do mysql. ele vai mostrar onde está o erro para você.

Furyeyes

Consertei…coloquei as aspas simples e não deu erro no banco
mas agora ele da esse erro

Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at jSystem.TelaLogin.actionPerformed(TelaLogin.java:79)

essa linha é essa aqui…eu estou achando que o erro esta na verificação da senha…mas não tenho certeza!

Hebert_Coelho

Algum cara está null. Veja quem é e coloque um devido valor.

Furyeyes

Cara ta tudo certto…nem dá mais erro…o unico problema agora é lógica, mas ai que tá…
Nessa verificação eu printei tantos o textfield o x e os gets…e ta tudo certo
jt login é igual a user1.getLogin e x é igual a user1.getSenha

me ajuda aiii
ele não entra no if…

Hebert_Coelho

Se não entra, tem alguma coisa errada.

E se você está comparando String, pq vcoê não usa o método equals?

Furyeyes

Eu usei == porque já tinha testado com equals()…
não sei mais oque fazer ta fod…

M

experimenta assim:

if( (user1 != null) && (jtLogin.getText().equals(user1.getLogin()) && (new String(jtSenha.getPassword()).equals(user1.getSenha())) ){
Furyeyes

não foi também…
olha que engraçado não sei se vai ajudar…mas quando eu cadastro um usuario pelo próprio mySql e faço login ele vai…mas quando cadastro pelo programa não vai…

por q será…

M

deu select eles estão no banco?

Furyeyes

Sim eu cadastro e eles vão para o banco…estão lá…até mudar senha e login ele muda…mas para entrar só entra quando cadastro pelo mySql…pelo programa não…
se não tivesse conectando ou algo do tipo acho que ele nem ia ler os que eu gravei no mySql né…
Eu dei uns System.out nos valores e eles batem…só na verificação do if que ele não entra

M

faz o seguinte…

if(user1 != null){
            if(jtLogin.getText().equals(user1.getLogin()){
                if(jtSenha.getPassword().toString().equals(user1.getSenha())){
                    
                }
            }
        }

ve ai onde não está entrando

substitui o to string … ele não pega os caracteres direito…
usa o new String(jtSenha.getPassword())…mesmo;

há…da uns .Trim()…antes de comparar

Furyeyes

Vou postar os códigos responsáveis por essa parte..

Aqui é a tela de login...onde o usuario coloca o login e a senha e eu verifico chamando o método verificaUser da Classe BancoDeDados

if(e.getSource()==login || e.getSource()==jtSenha){			
		
			Usuario user = new Usuario();
			Usuario user1 = new Usuario();
			String x = new String();
			
			user.setLogin(jtLogin.getText());
			x = String.valueOf(jtSenha.getPassword());
			user.setSenha(x);
			user1 = BancoDeDados.verificaUser(user);
			
			/*System.out.println("\nuser.getLogin == "+user.getLogin());
			System.out.println("user.getSenha == "+user.getSenha());
			
			System.out.println("\nX == "+ x);
			System.out.println("user1.getSenha == "+user1.getSenha());
			System.out.println("jtLogin == "+jtLogin.getText());
			System.out.println("user1.getLogin == "+user1.getLogin());*/
			
			
			if( (user1 != null) && (jtLogin.getText().equals(user1.getLogin())) && (new String(jtSenha.getPassword()).equals(user1.getSenha()))){//&& x == user1.getSenha()){
				JOptionPane.showMessageDialog(null, "Bem vindo\n" + user1.getNome());
				if(user1.getAcesso().equals("parc")){				
					JFrame jCadastro = new TelaCadastro();
					jCadastro.setVisible(true);	
					dispose();
					TelaCadastro.bhome.setVisible(false);
					TelaCadastro.bquarto.setVisible(false);
				}
				else{
					JFrame jHome = new TelaHome();
					jHome.setVisible(true);	
					dispose();
			   }	
			}
			else{
				JOptionPane.showMessageDialog(null,"Senha ou login incorretos","Erro login",JOptionPane.ERROR_MESSAGE);
				jtLogin.setText(null);
				jtSenha.setText(null);
			}
		}

Aqui é o método verificaUser

public static Usuario verificaUser(Usuario usuario){
		
		Usuario usuario1 = new Usuario();
		try{
			String sql = "SELECT * FROM usuario WHERE Login='"+usuario.getLogin()+"' AND Senha='"+usuario.getSenha()+"'";			 
			
			stm = conexao.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY );
			rs = stm.executeQuery();
			
			if(rs != null){	
				while(rs.next()){
					//Usuario usuario2 = new Usuario();
					usuario1.setLogin(rs.getString("Login"));
					usuario1.setSenha(rs.getString("Senha"));
					usuario1.setNome(rs.getString("Nome"));
					usuario1.setAcesso(rs.getString("Acesso"));
						
					rs.close();
					stm.close();
					System.out.println("Nome: "+usuario.getNome());
					System.out.println("Login: "+usuario.getLogin());
					System.out.println("Senha: "+usuario.getSenha());
					System.out.println("Acesso: "+usuario.getAcesso());
					
					System.out.println("Nome1: "+usuario1.getNome());
					System.out.println("Login1: "+usuario1.getLogin());
					System.out.println("Senha1: "+usuario1.getSenha());
					System.out.println("Acesso1: "+usuario1.getAcesso());
					return usuario1;
				}
			
			}
				
		}catch(SQLException e4){
			e4.printStackTrace();
			JOptionPane.showMessageDialog(null,"Erro: "+e4 , "Cadastro", JOptionPane.ERROR_MESSAGE);
		}
		return null;
	}
M

esse

e.getSource();

o que é esse objeto E??

M
Furyeyes:
Vou postar os códigos responsáveis por essa parte..

Aqui é a tela de login...onde o usuario coloca o login e a senha e eu verifico chamando o método verificaUser da Classe BancoDeDados

if(e.getSource()==login || e.getSource()==jtSenha){			
		
			Usuario user = new Usuario();
			Usuario user1 = new Usuario();
			String x = "";
			
			user.setLogin(jtLogin.getText());
			x = String.valueOf(jtSenha.getPassword());
			user.setSenha(x);

			user1 = BancoDeDados.verificaUser(user);
					
			
			if( (user1 != null) && (user.getLogin().equals(user1.getLogin())) && (user.getSenha().equals(user1.getSenha())) ){
				JOptionPane.showMessageDialog(null, "Bem vindo\n" + user1.getNome());
				if(user1.getAcesso().equals("parc")){				
					JFrame jCadastro = new TelaCadastro();
					jCadastro.setVisible(true);	
					dispose();
					TelaCadastro.bhome.setVisible(false);
					TelaCadastro.bquarto.setVisible(false);
				}
				else{
					JFrame jHome = new TelaHome();
					jHome.setVisible(true);	
					dispose();
			   }	
			}
			else{
				JOptionPane.showMessageDialog(null,"Senha ou login incorretos","Erro login",JOptionPane.ERROR_MESSAGE);
				jtLogin.setText(null);
				jtSenha.setText(null);
			}
		}
Furyeyes

Fiz o seu teste…e ele me mostrou login errado…mas o login esta certo…

if(user1 != null){ if(jtLogin.getText().equals(user1.getLogin())){ if(jtSenha.getPassword().toString().equals(user1.getSenha())){ JOptionPane.showMessageDialog(null, "Bem vindo\n" + user1.getNome()); if(user1.getAcesso().equals("parc")){ JFrame jCadastro = new TelaCadastro(); jCadastro.setVisible(true); dispose(); TelaCadastro.bhome.setVisible(false); TelaCadastro.bquarto.setVisible(false); } else{ JFrame jHome = new TelaHome(); jHome.setVisible(true); dispose(); } }else System.out.println("senha errada"); }else System.out.println("login errado"); } else{ JOptionPane.showMessageDialog(null,"Senha ou login incorretos","Erro login",JOptionPane.ERROR_MESSAGE); jtLogin.setText(null); jtSenha.setText(null); }

M

deu os .trim??

Furyeyes

o e.getSource() estou vendo se o botão logout foi apertado…
é do actionPerformed()

Furyeyes

Ei matheus resolvido…quando pegava o que estava no jtSenha estava pegando com toString ele me trazia alg doido…e como na hora de alterar ou cadastrar usuario novo eu tinha maskFormatter eu coloquei trim porque imaginei que ficasse esse espaço e ai ele não reconhecia nem a senha nem o login…
Mas valeu me ajudou estava ficando doido aqui já…
valeu também JakeFrog

\o/

só falta resolver mais um erro mas vou perguntar pra prof!

VALEUUU

Criado 26 de maio de 2012
Ultima resposta 26 de mai. de 2012
Respostas 20
Participantes 3