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.
Como você criou os dois ResultSets?
Você fechou a conexão ANTES de fechar os Resultsets?
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.
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
<%@page contentType=“text/html”%>
<%@page pageEncoding=“ISO-8859-1”%>
<%@page import=“dominio.negocios.classes., java.sql.” 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")) %> |
|
Contato: |
[b] <%
resConsulta.close();
resContato = contato.pesquisaContato(idCliente);
resContato.next();
%>[/b]
<%= 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.