Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

KlebersonQSL

[Resolvido] Java + Firebird + ResultSet sempre vazio

Recommended Posts

Olá Amigos.

 

Sou iniciante em linguagem Java, mas ja trabalho com Delphi a 5 anos.

Estou com dificuldade em resolver o código abaixo, sempre me retorna

que não encontrou nenhum resultado.

 

Agradeço se puderem me ajudar.

 

   try {
     Connection con;

     Class.forName("org.firebirdsql.jdbc.FBDriver");
     con = DriverManager.getConnection(
             "jdbc:firebirdsql:localhost/3050:D:\\Projetos\\FastOdontoJava\\db\\dados.fdb", "sysdba", "masterkey");

     Statement stm = con.createStatement();
     String consulta = "SELECT id_funcionario,  nome, login, senha FROM funcionario WHERE login = '"
             + nome + "' AND senha = '" + senha + "'";
     ResultSet rs = stm.executeQuery(consulta);
     // rs.next();

     if (rs.getFetchSize() != 0) {
       formPrincipal frmPrincipal = new formPrincipal();

       frmPrincipal.setTitle("FastOdonto - 1.0");
       frmPrincipal.setLocationRelativeTo(null);
       frmPrincipal.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
       frmPrincipal.setExtendedState(JFrame.MAXIMIZED_BOTH);
       frmPrincipal.setVisible(true);

       frmPrincipal.nomeUsuario(nome);

       this.dispose(); // encerra o formulário atual
     } else {
       JOptionPane.showMessageDialog(null, "Usuário não encontrado.");

       edSenha.setText("");
       edUsuario.setText("");

       edUsuario.grabFocus();
     }

     con.close();
   } catch (Exception e) {
     JOptionPane.showMessageDialog(null, "Erro: " + e);
   }

Compartilhar este post


Link para o post
Compartilhar em outros sites

1 - Em Java, por questões de segurança e performance, prefira sempre usar prepared statements.

 

2 - O resultset retornado sempre começa apontando null, tendo resultados ou não, por isso você tem de avaliar se tem próxima linha.

 

Tente fazer assim;

String consulta = "SELECT * FROM usuario WHERE login = ? AND senha = ?";   		


           Usuario usuario = null;

           try{
                 ps = con.prepareStatement(sql);
                 ps.setString(1, login);
                 ps.setString(2, senha);
                 rs = ps.executeQuery(); 				

  				if(rs.next()){

                       usuario  = new Usuario();                        

                       usuario.setLogin(rs.getString("login"));
                       usuario.setSenha(rs.getString("senha"));
                       usuario.setNome(rs.getString("nome"));
                       usuario.setFone(rs.getString("fone"));
                       usuario.setCelular(rs.getString("celular"));
                       usuario.setEmail(rs.getString("email"));
                       usuario.setLogradouro(rs.getString("logradouro"));
                       usuario.setNumero(rs.getString("numero"));
                       usuario.setComplemento(rs.getString("complemento"));
                       usuario.setCep(rs.getString("cep"));
                       usuario.setBairro(rs.getString("bairro"));
                       usuario.setCidade(rs.getString("cidade"));
                       usuario.setEstado(rs.getString("estado"));   

                 }  else {
                     throw new Exception("Login e/ou senha inválidos!");
                   }                 

            	return usuario;              

           } catch(SQLException ex ){
             System.out.println("Houve um erro no banco de dados \n" + ex.getMessage());                    
           } finally {   
                 ps.close();
                 rs.close();
                 con.close();                     							
        	}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito Obrigado pela ajuda.

 

 

 

1 - Em Java, por questões de segurança e performance, prefira sempre usar prepared statements.

 

2 - O resultset retornado sempre começa apontando null, tendo resultados ou não, por isso você tem de avaliar se tem próxima linha.

 

Tente fazer assim;

String consulta = "SELECT * FROM usuario WHERE login = ? AND senha = ?";   		


           Usuario usuario = null;

           try{
                 ps = con.prepareStatement(sql);
                 ps.setString(1, login);
                 ps.setString(2, senha);
                 rs = ps.executeQuery(); 				

  				if(rs.next()){

                       usuario  = new Usuario();                        

                       usuario.setLogin(rs.getString("login"));
                       usuario.setSenha(rs.getString("senha"));
                       usuario.setNome(rs.getString("nome"));
                       usuario.setFone(rs.getString("fone"));
                       usuario.setCelular(rs.getString("celular"));
                       usuario.setEmail(rs.getString("email"));
                       usuario.setLogradouro(rs.getString("logradouro"));
                       usuario.setNumero(rs.getString("numero"));
                       usuario.setComplemento(rs.getString("complemento"));
                       usuario.setCep(rs.getString("cep"));
                       usuario.setBairro(rs.getString("bairro"));
                       usuario.setCidade(rs.getString("cidade"));
                       usuario.setEstado(rs.getString("estado"));   

                 }  else {
                     throw new Exception("Login e/ou senha inválidos!");
                   }                 

            	return usuario;              

           } catch(SQLException ex ){
             System.out.println("Houve um erro no banco de dados \n" + ex.getMessage());                    
           } finally {   
                 ps.close();
                 rs.close();
                 con.close();                     							
        	}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.