Verificação de Usuario e Login

7 respostas
joaoabi

Bom dia Senhores!

Gente to com um problema aqui, estou voltando a mexer com java depois de quase 5 anos parados
esqueci muitas coisas, queria que vocês me audassem,

Meu problema e o seguinte eu quero fazer uma consulta simples num banco de dados em MySql
atraves de um método em java, mas ela ainda esta retornando erro, dizendo que a consulta esta
trazendo mais de um valor, ate ai tudo brm acredito que uma simples clausula where resolva,
a questao é que eu quero que o aplicativo verifique, os valores das caixas de texto e compare com
o banco.

Segue o codigo do método:

public class VerificaLogin {

public String usuario;
public String senha;
/<em>Inicio dos getters e Setters</em>/

public String getSenha()

{ return senha; }
public void setLogin(String usuario)
{this.usuario = usuario;}

public String getUsuario()
{ return usuario;}

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

/Inicio das regras de negocio/

public void verLogin()
 {
try

{

String sql=Select (us_usuario,us_senha) from est_usuario;
PreparedStatement smt = Conexao.getConnection().prepareStatement(sql);

smt.execute();

smt.close();
JOptionPane.showMessageDialog(null,sql);
}

catch(SQLException erro)

{

JOptionPane.showMessageDialog(null,Erro no método verlogin!+erro.getMessage());

}

}

Agradeço!

}

7 Respostas

cristianonasciment

tenta algo assim:

sql =  " SELECT * FROM sua_tabela WHERE usuario = ? AND login = ? 
			
			PreparedStatement pstmt = conn.prepareStatement(sql);
			
			pstmt.setInt(1, usario);
			pstmt.setInt(2, login);
joaoabi

cris~

Entao mas ai no lugar do “?” eu coloco o valor da caixa de texto?
ou valor do usuario dentro do banco?

grato!

Felipeuff
joaoabi:
cris~

Entao mas ai no lugar do "?" eu coloco o valor da caixa de texto?
ou valor do usuario dentro do banco?

grato!

Coloca no seu código exatamente esse código que a Cris escreveu. Trocando, é claro, sua_tabela pelo nome da tabela que vc fará a pesquisa

sql =  " SELECT * FROM sua_tabela WHERE usuario = ? AND login = ?   "
               
            PreparedStatement pstmt = conn.prepareStatement(sql);   
               
            pstmt.setInt(1, usario);   
            pstmt.setInt(2, login);
O espaço com
pstmt.setInt(1, usario);
significa que na primeiro "?" será colocada a String usuario e
pstmt.setInt(2, login);
que será colocada a String login.

Flw.

M

acabei escrevendo a resposta junto com o amigo acima…mas enfim, tem uma complementaçãozinha pra voce… :idea:

joaoabi:
cris~

Entao mas ai no lugar do “?” eu coloco o valor da caixa de texto?
ou valor do usuario dentro do banco?

grato!

o ? recebe tuas variáveis que voce insere no aplicativo substituindo a concatenação da String sql

eu vi algo mais ou menos assim esses dias…nao sei se funciona pois faz uns 6 meses que eu to trabalhando com programação
to sem a IDE aqui, testa pra ver se funciona e posta aqui…a ideia é essa:

sql =  " SELECT * FROM sua_tabela WHERE usuario = ? AND login = ?   
             ResultSet rs = null;
            PreparedStatement pstmt = conn.prepareStatement(sql);   
               
            pstmt.setInt(1, usario);   
            pstmt.setInt(2, login);  
             rs = pstmt.executeQuery();
             if(rs == null){   //se o resultado da pesquisa nao retornar nada
                 usuario nao cadastrado

          }else   //se retornar é porque o usuario e senha que voce digitou bate com o que tá no banco
                bem vindo ao sistema
joaoabi

Ai e que esta, quando eu coloco o setInt(1, usuario); da erro nessa linha,
e quando eu tento rodar o metodo da uncompilale source cod;

alguem tem alguma ideia de porque o setInt nao esta sendo aceito?

dsystem

João,

Isso provavelmente está acontecendo porque, assim como você postou no seu código, o seu user e password foram declarados como String.

Então no seu caso ficaria assim

pstmt.setString(1, usario);
pstmt.setString(2, login);
A

E ai doido…
Seguinte, você falou que quer verificar o usuário e senha digitando em possívis TextFields certo?? então, caso tenha entendido certo, você pode fazer um método com retorno boolean (Verdadeiro ou Falso) que verifica no banco se o login e a senha daquele usuário são válidos, caso sim ele retorna true, caso não ele retorna falso, mais ou menos assim!!

public boolean validarUsuario(String login , String senha) throws SQLException// SEU LOGIN E SENHA DIGITADOS NOS CAMPOS DE TEXTO (TEXTFIELD)
    {
        boolean ret = false;
        String sql = "SELECT * FROM suaTabela WHERE login = ? AND senha = ?";
        PreparedStatement smt = Conexao.getConnection().prepareStatement(sql);

        smt.setString(1,login);
        smt.setString(2,senha);
        
        ResultSet rs = stmt.executeQuery();

        if(rs.next())
        {

                ret = true;
            
        }
        rs.close();
        stmt.close();
        return ret;
    }

Espero ter Ajudado!!!

Criado 29 de novembro de 2010
Ultima resposta 29 de nov. de 2010
Respostas 7
Participantes 6