pessoal nao sei porque justamente nesse caso nao está enviando
eis o código
publicbooleanLogin(Stringlogin,Stringsenha){booleanstatus=false;Stringlogin1,senha1;connection=ConnectionFactory.getConnection();sql="SELECT * FROM usuarios WHERE "+"usu_login = ? AND "+"usu_senha = ?";try{stmt=connection.prepareStatement(sql);stmt.setString(1,login);stmt.setString(2,senha);resultSet=stmt.executeQuery();if(resultSet.next()){login1=resultSet.getString("usu_login");senha1=resultSet.getString("usu_senha");if(login1.equals(login)&&senha1.equals(senha)){Usuariousuario=newUsuario();Stringuser=resultSet.getString("usu_nome");usuario.setNome(user);//JOptionPane.showMessageDialog(null, "Usuario: "+user);status=true;}}elseJOptionPane.showMessageDialog(null,"Login ou senha inválido ");}catch(SQLExceptionex){ex.printStackTrace();JOptionPane.showMessageDialog(null,"Login ou senha inválido \nErro: "+ex.getMessage());}returnstatus;}
quando eu dou o comando usuario.getNome();
nao vem nada... alguem pode me ajudar?
pelo que estou vendo você está tentando fazer uma query que busca senha e login, nçao sei se este jeito está certo.
Se for sql ou mysql tente assim
sql="select * from usuarios where usu_login = '"+VariavelLogin+"' and usu_senha = '"+Varia+"'";
drsmachado
cbcarlos07:
pessoal nao sei porque justamente nesse caso nao está enviando
eis o código
publicbooleanLogin(Stringlogin,Stringsenha){booleanstatus=false;Stringlogin1,senha1;connection=ConnectionFactory.getConnection();sql="SELECT * FROM usuarios WHERE "+"usu_login = ? AND "+"usu_senha = ?";try{stmt=connection.prepareStatement(sql);stmt.setString(1,login);stmt.setString(2,senha);resultSet=stmt.executeQuery();if(resultSet.next()){//Até onde entendi, só vai entrar aqui se e somente se houver um resultado, ou seja, se usu_login = login e usu_senha = senhalogin1=resultSet.getString("usu_login");senha1=resultSet.getString("usu_senha");if(login1.equals(login)&&senha1.equals(senha)){//Assim sendo, se entrou no if, por que essa validação aqui???Usuariousuario=newUsuario();//Não sei onde você chama esse método, só posso dizer que este aqui só vai viver até este if acabar. Stringuser=resultSet.getString("usu_nome");usuario.setNome(user);//JOptionPane.showMessageDialog(null, "Usuario: "+user);status=true;}}elseJOptionPane.showMessageDialog(null,"Login ou senha inválido ");}catch(SQLExceptionex){ex.printStackTrace();JOptionPane.showMessageDialog(null,"Login ou senha inválido \nErro: "+ex.getMessage());}returnstatus;}
quando eu dou o comando usuario.getNome();
nao vem nada... alguem pode me ajudar?
Gratoo
LucasHP
Seria interessante você dar um println nas variaveis login1 e senha1 para ver se está recuperando corretamente do banco. Eu suponho que o erro seja esse.
Abraços.
drsmachado
LucasHP:
Seria interessante você dar um println nas variaveis login1 e senha1 para ver se está recuperando corretamente do banco. Eu suponho que o erro seja esse.
Abraços.
Supôs errado.
Olhe estas linhas
if(login1.equals(login)&&senha1.equals(senha)){//Assim sendo, se entrou no if, por que essa validação aqui??? Usuariousuario=newUsuario();//Não sei onde você chama esse método, só posso dizer que este aqui só vai viver até este if acabar. Stringuser=resultSet.getString("usu_nome");usuario.setNome(user);//JOptionPane.showMessageDialog(null, "Usuario: "+user); status=true;}
E me diga se é isto mesmo…
drsmachado
androidelp:
Ele retornou algum erro?
Tente usar o depurador?
pelo que estou vendo você está tentando fazer uma query que busca senha e login, nçao sei se este jeito está certo.
Se for sql ou mysql tente assim
sql = "select * from usuarios where usu_login = '"+VariavelLogin+"' and usu_senha = '"+Varia+ "'";
A query está certa no modo como está, ele usa PreparedStatement e a forma como você indicou é uma péssima prática de programação.
C
cbcarlos07
[quote=cbcarlos07]pessoal nao sei porque justamente nesse caso nao está enviando
eis o código
como o MySQL nao é case senstive
exemplo: se a minha senha é 'CARLOS' e eu digitasse 'carlos' ele aceitaria
Por isso estou fazendo outra verificação no caso do
Camarada, entenda uma coisa.
No código do tópico original, você declarava e instanciava o objeto usuario dentro do if. Ou seja, o escopo dele era até que o if acabasse.
Neste último, você o declara dentro do método Login (sim, com nome fugindo da especificação javaBeans). Isso aumenta o escopo dele, mas não faz milagres. Ou seja, quando o return é chamado, o usuario (objeto do método Login) morre.
Se você quer que o nome seja recebido, precisa fazer com que o mesmo deixe o método (o que não é possível, tendo em vista que você informa que o retorno é um boolean).
Sugestão, modifique o método, faça-o retornar o próprio objeto de usuario, caso exista e, caso não, retorne null.
C
cbcarlos07
drsmachado:
Camarada, entenda uma coisa.
Sugestão, modifique o método, faça-o retornar o próprio objeto de usuario, caso exista e, caso não, retorne null.
É que eu tentei fazer uma mundança pra tentar fazer o milagre como vc disse rsrs
Não sei se eu fiz certo.
Porque ainda retornando null.
Help me lol
C
cbcarlos07
E ai o que acham?
ViniGodoy
Acho que como o drsmachado falou, seu código estava melhor antes, com PreparedStatement. Agora você não só não corrigiu o problema, como também adicionou uma péssima prática de programação ao código, e tornou-o vulnerável a bugs. Por exemplo, tente o login do sr. MacDonald’s.
Eu sugeriria que você use o depurador e rode o programa passo a passo. Aí você observa se o código entrou no if resultSet.next().