ResultSet nao realiza consulta

7 respostas
furacao123

Aew galera preciso de uma ajuda nao estou conseguindo popular os textbox de um cadastro queria saber oq esta errado. segue os codigos.

funcionario.java

public ResultSet consultar()
    {
        MySQL mysql = new MySQL();
	Connection con = mysql.conectar();
	try
	{
            Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
	    ResultSet rs = stmt.executeQuery("SELECT * FROM funcionario");
            if(rs.next())
            {
            String nometeste;
            nometeste = rs.getString(2);
            System.out.println(nometeste);
            }
            return rs;
	}
	catch (SQLException sqle)
	{
	    sqle.getMessage();
	    JOptionPane.showMessageDialog(null,"Falha na Consulta","Consulta de Registros",JOptionPane.ERROR_MESSAGE);
	    return(null);
	}
        finally
        {
            mysql.fecharConn(con);
        }	
    }

frmFuncionario.java

public frmFuncionario() 
    {
        initComponents();
        ObterRegistro();
        try 
        {
            if(rs.next())
            txtNome.setText(rs.getString(2));
        } 
        catch (SQLException ex) 
        {
            JOptionPane.showMessageDialog(null,"Erro na Consulta1","Consulta de Registros",JOptionPane.ERROR_MESSAGE); 
        }
    }

    public void ObterRegistro()
    {
       funcionario func = new funcionario();
       try
       {
           rs = func.consultar();
           if(rs.next())
            {
            String nometeste;
            nometeste = rs.getString(2);
            System.out.println(nometeste);
            }
       }
       catch(Exception x)
       {
           JOptionPane.showMessageDialog(null,"Erro na Consulta2","Consulta de Registros",JOptionPane.ERROR_MESSAGE);
       }
    }

esse teste do metodo consultar mostra q faz a consulta certa…mas qdo executo o frm Funcionario ja aparece a msg de erro.
Vlw

7 Respostas

rockstorm

Qual o erro??

furacao123

ele da erro na consulta…tipo se eu tiro o fecharConn do metodo consultar funciona normal

pq eu nao consigo fechar a conexao com o banco??

public ResultSet consultar()
    {
        MySQL mysql = new MySQL();
	Connection con = mysql.conectar();
	try
	{
            Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
	    ResultSet rs = stmt.executeQuery("SELECT * FROM funcionario");
            if(rs.next())
            {
            String nometeste;
            nometeste = rs.getString(2);
            System.out.println(nometeste);
            }
            return rs;
	}
	catch (SQLException sqle)
	{
	    sqle.getMessage();
	    JOptionPane.showMessageDialog(null,"Falha na Consulta","Consulta de Registros",JOptionPane.ERROR_MESSAGE);
	    return(null);
	}
        finally
        {
            
        }	
    }
rockstorm

Coloca o stacktrace do erro aí…

B

Seria melhor você retornar uma String com o nome da pessoa, e não retornar um ResultSet.

Dessa forma você consegue fechar o ResultSet, o Statement e a conexão no lugar certo.

furacao123

eh o seguinte erro se eu dexo pra fechar a conexao na classe funcionario
java.sql.SQLException: Operation not allowed after ResultSet closed

mas o problema eh q eu preciso do resultset pois nesse frm de cadastro funcionario eu vou ter botoes de navegaçao…proximo, anterior…onde vai ficar listando os dados do banco e populando os textbox

B

ResultSets usam uma conexão direta com o banco, se você fechar a conexão e tentar executar alguma operação com ele, vai dar SQLException mesmo.

abelgomes

é o seguinte Furacão 123 e já :slight_smile:

primeiro

if(rs.next())

quando vc faz isso, ja esta avançando “uma casa” com o result set… até ai tudo bem, vc poderia dar um rs.first();

segundo: vc esta fechando a conexao

finally  
     {  
          mysql.fecharConn(con);  
      }

O ideal, seria vc popular um obejto com esse rs e depois retornar o objeto…se é só uma string, retorna uma String ou uma List

fica bem mais facil pra vc…

se nao conseguir fazer posta a duvida aiq ue agente te ajuda…

Criado 10 de novembro de 2008
Ultima resposta 10 de nov. de 2008
Respostas 7
Participantes 4