Verificação de Usuario e Login

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;

/Inicio dos getters e Setters/
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!
}

tenta algo assim:

[code]sql = " SELECT * FROM sua_tabela WHERE usuario = ? AND login = ?

		PreparedStatement pstmt = conn.prepareStatement(sql);
		
		pstmt.setInt(1, usario);
		pstmt.setInt(2, login);[/code]

cris~

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

grato!

[quote=joaoabi]cris~

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

grato![/quote]

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

[code]sql = " SELECT * FROM sua_tabela WHERE usuario = ? AND login = ? "

        PreparedStatement pstmt = conn.prepareStatement(sql);   
           
        pstmt.setInt(1, usario);   
        pstmt.setInt(2, login);[/code]

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.

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

[quote=joaoabi]cris~

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

grato![/quote]

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

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?

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);

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!!!