Resultset is closed

3 respostas
E

Tenho uma aplicação web, funciona normalmente, exeto quando eu coloco em uma pagina 2 resultset’s dai ele compila normalmente porem ao executar a pagina o seguinte ero aparece:

javax.servlet.ServletException: The result set is closed

org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:848)

org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)

org.apache.jsp.clienteConsultado_jsp._jspService(clienteConsultado_jsp.java:381)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)

root cause

org.firebirdsql.jdbc.FBSQLException: The result set is closed

org.firebirdsql.jdbc.FBResultSet.checkCursorMove(FBResultSet.java:217)

org.firebirdsql.jdbc.FBResultSet.next(FBResultSet.java:249)

org.apache.jsp.clienteConsultado_jsp._jspService(clienteConsultado_jsp.java:121)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.9 logs.

[b]

se puderem me ajudar eu agradesso.

3 Respostas

ze_kiefa

Como você criou os dois ResultSets?
Você fechou a conexão ANTES de fechar os Resultsets?

rodrigo_gomes

vc está passando um Resultset pra sua Jsp?

pq ao invés disso vc não passa um objeto que encapsula os dados desse result set?

ps.: evite escrever em caixa alta, parece q vc tah gritando.

E

As minhas classes são as seguintes:

// classe de conexão com o banco.

package dominio.persistencia.classes;
import java.sql.*;

/**

  • ConectaBD.java
  • @author Emerson Senna
  • Criado em 17 de Abril de 2006, 16:42
    */

public class ConectaBD {

private static Connection conexao;
private String pesquisa;

public ConectaBD() {
        getConexao();  
}

private synchronized static Connection getConexao() {
        if (conexao == null) {
            try {		
                Class.forName("org.firebirdsql.jdbc.FBDriver").newInstance();
                conexao = DriverManager.getConnection("jdbc:firebirdsql:local:D:/ProjWebNTS/Database/HERCULES.GDB","SYSDBA","masterkey");;
            } catch (Exception e){
                System.out.println("Não foi possivel conectar ao banco Erro no getConnection");    
            }
        }
        return conexao;
    }
    
    public ResultSet getEspecifico(String SQL) {
        ResultSet resultado = null;
        try {
            pesquisa  = SQL; 
            Statement declaracaoMetodo = conexao.createStatement();
            resultado = declaracaoMetodo.executeQuery(pesquisa);
        } catch (SQLException e) {
            System.out.println("Ocorreu um erro na classe ConectaBD método 'getEspecifico'.");
        }
        return resultado;
}

}

// Classe cliente

package dominio.negocios.classes;

import dominio.persistencia.classes.ConectaBD;

import java.sql.*;

/*

  • Cliente.java
  • Created on 23 de Maio de 2006, 09:28
  • @author Emerson Senna.
    */

public class Cliente {

private String pesquisaCliente;
ConectaBD conn = new ConectaBD();

public Cliente() {
}

public ResultSet getAllCliente(){        
    pesquisaCliente = "Select * from CLIENTE order by CLIENOMEFANTASIA";
    ResultSet resultado = conn.getEspecifico (pesquisaCliente);
    return resultado;
}

public ResultSet getClienteEspecifico(String id){
    pesquisaCliente = "Select * from CLIENTE where CLIECLIENTE = " + id;
    ResultSet resultado = conn.getEspecifico (pesquisaCliente);
    return resultado;
}

}

// Pagina JSP

<%<a class="mention" href="/u/page">@page</a> contentType=“text/html%>

<%<a class="mention" href="/u/page">@page</a> pageEncoding=“ISO-8859-1”%>

<%<a class="mention" href="/u/page">@page</a> import=“dominio.negocios.classes.<em>, java.sql.</em> session=true%>

<jsp:useBean id=“cliente” class=“dominio.negocios.classes.Cliente” scope=“page”>

</jsp:useBean>

<jsp:useBean id=“verifica” class=“dominio.negocios.classes.FormatString” scope=“page”>

</jsp:useBean>

<jsp:useBean id=“contato” class=“dominio.negocios.classes.ClienteContato” scope=“page”>

</jsp:useBean>
<%!

ResultSet resConsulta = null;

ResultSet resContato = null;

String idCliente;

%>

<%

idCliente = request.getParameter(consultaCli);

resConsulta = cliente.getClienteEspecifico(idCliente);

//resContato = contato.pesquisaContato(idCliente);

%>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
Cliente:
<% resConsulta.next(); %> <%= verifica.verificaNulidade(resConsulta.getString("CLIENOMEFANTASIA")) %>
Razão Social:
<%= verifica.verificaNulidade(resConsulta.getString("CLIERAZAOSOCIAL")) %>
CNPJ:
<%= verifica.verificaNulidade(resConsulta.getString("CLIECNPJ")) %>
Insc. Est/Muni : <%= verifica.verificaNulidade(resConsulta.getString("CLIEINSCRICAOESTADUAL"))%> <%= verifica.verificaNulidade(resConsulta.getString("CLIEINSCRICAOMUNICIPAL"))%>
CEP: <%= verifica.verificaNulidade(resConsulta.getString("CLIECEP"))%>
Endereço: <%= verifica.verificaNulidade(resConsulta.getString("CLIETIPOLOGRADOURO"))%> <%= verifica.verificaNulidade(resConsulta.getString("CLIELOGRADOURO")) %> <%= verifica.verificaNulidade(resConsulta.getString("CLIENUMERO")) %> <%= verifica.verificaNulidade(resConsulta.getString("CLIECOMPLEMENTO"))%> [/b]
Bairro: <%= verifica.verificaNulidade(resConsulta.getString("CLIEBAIRRO")) %>
Cidade/UF: [b]<%= verifica.verificaNulidade(resConsulta.getString("CLIECIDADE")) %> <%= "/ " + verifica.verificaNulidade(resConsulta.getString("CLIEUF")) %>[/b]
Tel./Fax/Celular: [b]<%= verifica.verificaNulidade(resConsulta.getString("CLIETELEFONE1")) + " " + verifica.verificaNulidade(resConsulta.getString("CLIETELEFONE2")) + " " + verifica.verificaNulidade(resConsulta.getString("CLIEFAX"))%>
E-mail: <%= verifica.verificaNulidade(resConsulta.getString("CLIEEMAIL")) %>
Site: <%= verifica.verificaNulidade(resConsulta.getString("CLIEURL")) %>
Região: <%= verifica.verificaNulidade(resConsulta.getString("CLIEREGIAO")) %>
Ramo atividade: <%= verifica.verificaNulidade(resConsulta.getString("CLIERAMOATIVIDADE")) %>
Situação: <%= verifica.verificaNulidade(resConsulta.getString("CLIESITUACAO")) %>
Obs: <%= verifica.verificaNulidade(resConsulta.getString("CLIEOBSERVACAO")) %>
[b] <% resConsulta.close(); resContato = contato.pesquisaContato(idCliente); resContato.next(); %>[/b]
Contato:<%= verifica.verificaNulidade(resContato.getString("COCLNOME")) %> [/b]
 

você pode me dizer por favor se eu tenho que fechar o meu resultSet, para usar outro, ou posso perfeitamente usar dois dentro de um JSP bean ao mesmo tempo?

só consegui farzer funcionar com dois fazendo o fechamento do primeiro resultset.

obrigado.

Criado 31 de maio de 2006
Ultima resposta 31 de mai. de 2006
Respostas 3
Participantes 3