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

Como verificar retorno de uma SQL em Java

Bom dia pessoal,

Aqui estou eu com mais uma dúvida.

Estou querendo fazer um esquema de permissão na minha aplicação e para isso eu criei o método:

    public boolean checkPermissionAdmin(Usuario usuario) throws SQLException{

        Connection con = ConnectionFactory.getConnection();
        PreparedStatement stmt = null;
        ResultSet rs = null;

        boolean Permission = false;

        stmt = con.prepareStatement("SELECT permissao = ? FROM usuario WHERE usuario = ? and senha = ?");
        stmt.setInt(1, usuario.getPermissao());
        stmt.setString(2, usuario.getNome());
        stmt.setString(3, usuario.getSenha());

        rs = stmt.executeQuery();

        return Permission;
    }

Eu não sei como recuperar, no caso, o valor que o select achou na permissao em questão.

Gostaria de fazer algo como

SE permissao = 1 ENTÃO permission = true

Alguém consegue me dar uma luz ? Enquanto isso sigo pesquisando aqui.


Consegui resolver parcialmente.

Na DAO ficou assim

public boolean checkPermissionAdmin(String login, String senha) throws SQLException{

        Connection con = ConnectionFactory.getConnection();
        PreparedStatement stmt = null;
        ResultSet rs = null;

        boolean permission = false;

        stmt = con.prepareStatement("SELECT permissao FROM usuario WHERE usuario = ? and senha = ?");
        stmt.setString(1, login);
        stmt.setString(2, senha);

        rs = stmt.executeQuery();

        if(rs.next()){

             Integer permissao = rs.getInt("permissao");
             if(permissao == 1){
                 return permission = true;
             } else {
                 return permission = false;
             }

        }

No botao ficou assim

 UsuarioDAO dao = new UsuarioDAO();
        UsuarioDAO dao2 = new UsuarioDAO();

       if(dao.checkLogin(jTextFieldUsuario.getText(), jTextFieldSenha.getText())){
            try {
                dao2.checkPermissionAdmin(jTextFieldUsuario.getText(), jTextFieldSenha.getText());


                JOptionPane.showMessageDialog(null,dao2);
            } catch (SQLException ex) {
                Logger.getLogger(LoginView.class.getName()).log(Level.SEVERE, null, ex);
            }
           new MenuView().setVisible(true);
           this.dispose();

       }else{
           JOptionPane.showMessageDialog(null, "Senha incorreta!");
       }

Porém a mensagem de retorno do dao2 no botão está mostrando dao.UsuarioDAO@2bef84f.

Não me lembro agora como faço a conversão disso.

2 respostas
solução!

Fala Rafael.

Teríamos que ver o conteúdo de sua classe UsuarioDAO pra tentar entender melhor o que pode ser retornado. Mas supondo que na classe UsuarioDAO exista um método que retorne uma String, você poderia retorná-lo. Assim:

JOptionPane.showMessageDialog(null, dao2.nomeUsuario());

O método nomeUsuario() é só um exemplo e pode não ser não seja a melhor estratégia ter esse tipo de retorno em um DAO, mas só vendo a classe pra ter certeza.

Mesma situação da outra mensagem lá, consegui achar a solução na internet.

Eu precisava converter o retorno, por isso estava acusando o serial e nao a string.