[RESOLVIDO]Problemas com para logar

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

[code]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);
		}
	}[/code]

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

[code]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;
}[/code]

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]

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

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?

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ê.

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!

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

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…

Se não entra, tem alguma coisa errada.

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

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

experimenta assim:


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

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á…

deu select eles estão no banco?

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

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

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

[code] 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);
		}
	}[/code]

Aqui é o método verificaUser

[code] 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;
}[/code]

esse


e.getSource();

o que é esse objeto E??

[quote=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

[code]

    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);
		}
	}

[/code][/quote]

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); }

deu os .trim??

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