Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Validação de Login no SQLite com AndroidStudio

Olá, já abri um tópico anteriormente sobre... mas infelizmente ainda não consegui executar o aplicativo. Não estou compreendendo a lógica de verificação... até montei um código, tirando alguns exemplos pela internet a fora, mas não estou conseguindo. Será que alguém poderia me ajudar?

Segue:

   public Usuario validarLogin(String login, String senha) {

        String[] selectionArgs = new String[]{login, senha};
        Cursor cursor = dao.getReadableDatabase().rawQuery("SELECT * FROM Usuarios WHERE usuario_nome=? AND usuario_senha=?", selectionArgs);
        Usuario usuarioLinha = null;
        while (cursor.moveToNext()) {
            usuarioLinha = new Usuario();
            usuarioLinha.setNome(cursor.getString(cursor.getColumnIndex("usuario_nome")));
            usuarioLinha.setSenha(cursor.getString(cursor.getColumnIndex("usuario_senha")));
        }cursor.close();
        return usuarioLinha;
    }
 botao_login = findViewById(R.id.login_botao);
    botao_login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            UsuarioDAO dao = new UsuarioDAO(LoginActivity.this);
            Usuario usuario = new Usuario();
            nome_login = findViewById(R.id.login_usuario);
            senha_login = findViewById(R.id.login_senha);

            if (nome_login.equals(usuario.getNome())&&senha_login.equals(usuario.getSenha())){
                dao.validarLogin("Rafaela","123456");
                Intent vaiParaListaEmpresas = new Intent(LoginActivity.this, ListaEmpresasActivity.class);
                startActivity(vaiParaListaEmpresas);
            }else{
                Toast.makeText(LoginActivity.this, "Usuário ou senha não conferem!", Toast.LENGTH_SHORT).show();
            }
        }
    });
    }
2 respostas
solução!

Olá Rafaela.

Está ocorrendo o seguinte no método onClick, você está criando um novo usuário que não tem nome e nem login:

Usuario usuario = new Usuario();

Depois você pega os componentes de nome e login que estão na tela:

nome_login = findViewById(R.id.login_usuario);
senha_login = findViewById(R.id.login_senha);

Ai sua verificação faz o seguinte, olha usuário novo que não sabe nada, seu nome (imagino que é uma String) é igual ao componente R.id.login_usuario (que imagino ser um EditText) e sua senha é igual ao componente R.id.login_senha. Você está comparando dois objetos diferentes.

Muda seu código e faz assim:

//Aqui estou supondo que seu componente login_usuario e login_senha são EditText, então pego o texto que foi digitado em cada um deles:
String nome = ((EditText) findViewById(R.id.login_usuario)).getText().toString();
String senha = ((EditText) findViewById(R.id.login_senha)).getText().toString();

// Com os dados do nome e senha, executa a consulta.
Usuario usuario = dao.validarLogin(nome, senha);

// Se a variável usuario for diferente de null, significa que consultou no SQLite e esse usuário existe, então:
if (usuario != null) {
    Intent vaiParaListaEmpresas = new Intent(LoginActivity.this, ListaEmpresasActivity.class);
    startActivity(vaiParaListaEmpresas);
} else {
    Toast.makeText(LoginActivity.this, "Usuário ou senha não conferem!", Toast.LENGTH_SHORT).show();
}

O que você acha?

Nossa, salvou a Pátria! Hahahaha! Muito agradecida, cara!!