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]
[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);
}
o e.getSource() estou vendo se o botão logout foi apertado…
é do actionPerformed()