Por que objeto.setNome() nao está enviando?

pessoal nao sei porque justamente nesse caso nao está enviando
eis o código

[code]
public boolean Login(String login, String senha){
boolean status = false;
String login1, 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)){
Usuario usuario = new Usuario();
String user = resultSet.getString(“usu_nome”);
usuario.setNome(user);
//JOptionPane.showMessageDialog(null, "Usuario: "+user);
status = true;
}
}
else
JOptionPane.showMessageDialog(null, "Login ou senha inválido ");
} catch (SQLException ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(null, "Login ou senha inválido \nErro: "+ex.getMessage());
}

    return status;
    
}[/code]

quando eu dou o comando usuario.getNome();
nao vem nada… alguem pode me ajudar?

Gratoo

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+ "'";

[quote=cbcarlos07]pessoal nao sei porque justamente nesse caso nao está enviando
eis o código

[code]
public boolean Login(String login, String senha){
boolean status = false;
String login1, 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 = senha
login1 = 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???
Usuario usuario = new Usuario();//Não sei onde você chama esse método, só posso dizer que este aqui só vai viver até este if acabar.
String user = resultSet.getString(“usu_nome”);
usuario.setNome(user);
//JOptionPane.showMessageDialog(null, "Usuario: "+user);
status = true;
}
}
else
JOptionPane.showMessageDialog(null, "Login ou senha inválido ");
} catch (SQLException ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(null, "Login ou senha inválido \nErro: "+ex.getMessage());
}

    return status;
    
}[/code]

quando eu dou o comando usuario.getNome();
nao vem nada… alguem pode me ajudar?

Gratoo[/quote]

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.

[quote=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.[/quote]
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???  
                   Usuario usuario = new Usuario();//Não sei onde você chama esse método, só posso dizer que este aqui só vai viver até este if acabar.   
                   String user = resultSet.getString("usu_nome");  
                   usuario.setNome(user);  
                   //JOptionPane.showMessageDialog(null, "Usuario: "+user);  
                   status =  true;  
               }  

E me diga se é isto mesmo…

[quote=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+ "'"; [/quote]
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.

[quote=cbcarlos07]pessoal nao sei porque justamente nesse caso nao está enviando
eis o código

[code]public boolean Login(String login, String senha){
boolean status = false;
Usuario usuario = null;
String user = null;
String login1, senha1;
connection = ConnectionFactory.getConnection();
sql = “SELECT * FROM usuarios WHERE "
+ “usu_login = '”+login+”’ AND "
+ “usu_senha = '”+senha+"’";
try {

        stmt = connection.prepareStatement(sql) ;           
        resultSet = stmt.executeQuery();
        if(resultSet.next()){ //verifica se há retorno
            login1 = resultSet.getString("usu_login");
            senha1 = resultSet.getString("usu_senha");
            if(login1.equals(login) && senha1.equals(senha)){ //compara se está exatamente igual MAIUSCULA e minúscula
                usuario = new Usuario(); //chama a classe para setar no método setNome o nome do usuario
                 resultSet.getString("usu_nome");
                usuario.setNome(user);
                //JOptionPane.showMessageDialog(null, "Usuario: "+user);
                status =  true;
            }
        }
        else
            JOptionPane.showMessageDialog(null, "Login ou senha inválido "); 
    } catch (SQLException ex) {
        ex.printStackTrace();
        JOptionPane.showMessageDialog(null, "Login ou senha inválido \nErro: "+ex.getMessage());
    }
        
    
    return status;
    
}        
}[/code]

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

  if (login.equals(login2) && senha.equals(senha2)){

}

Não retorna erro.

boolean status = controllerUsuario.login("admin", "admin");
        if(status == true){
            JOptionPane.showMessageDialog(null, "Bem vindo "+usuario.getNome());
            
        }

A mensagem retorna
Bem Vindo null

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.

[quote=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.[/quote]

É que eu tentei fazer uma mundança pra tentar fazer o milagre como vc disse rsrs

Mas tentarei fazer o que vc me sugeriu … Vlw

tentei fazer assim:

[code]
public Usuario loginUser(String login, String senha){
Usuario usuario = null;
String user = null;
String login1, senha1;
connection = ConnectionFactory.getConnection();
sql = “SELECT * FROM usuarios WHERE "
+ “usu_login = '”+login+”’ AND "
+ “usu_senha = '”+senha+"’";
try {

        stmt = connection.prepareStatement(sql) ;           
        resultSet = stmt.executeQuery();
        if(resultSet.next()){
            login1 = resultSet.getString("usu_login");
            senha1 = resultSet.getString("usu_senha");
            if(login1.equals(login) && senha1.equals(senha)){
                 usuario =  new Usuario();
                 user = resultSet.getString("usu_nome");
                 usuario.setNome(user);
                // JOptionPane.showMessageDialog(null, "Usuario: "+user);
            }
        }
        else
            JOptionPane.showMessageDialog(null, "Login ou senha inválido "); 
    } catch (SQLException ex) {
        ex.printStackTrace();
        JOptionPane.showMessageDialog(null, "Login ou senha inválido \nErro: "+ex.getMessage());
    }
    return usuario;
}// fim do método Login[/code]

Não sei se eu fiz certo.
Porque ainda retornando null.

Help me lol

E ai o que acham?

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().

Além disso, elimine o if da linha 16:

if(login1.equals(login) && senha1.equals(senha)){ 

Pois ele é totalmente inútil.

Deixa eu ver se eu entendi rsrs…

com o

stmt.prepareStatement(sql);
stmt.setString(1, nome);
stmt.executeQuery();

Ele fica case sensitve?

Por favor perdoem minha inexperiencia;

Você sabe porque usuario.getNome();
ta retornando null?

Eu ainda nao entendi…

Só por desencargo de consciência, posta sua classe Usuário.

Desculpa a demora…
Taí minha classe usuário.

[code]public class Usuario {

private String nome;
private String login;
private String senha;    

public String getNome() {
    return nome;
}

public void setNome(String nome) {
    this.nome = nome;
}

public String getLogin() {
    return login;
}

public void setLogin(String login) {
    this.login = login;
}

public String getSenha() {
    return senha;
}

public void setSenha(String senha) {
    this.senha = senha;
}

}
[/code]