这是stack trace:
org.springframework.jdbc.UncategorizedSQLException: StatementCallback; uncategorized SQLException for SQL [select xls_file from OFFER_REP_TEMPLATE where template_id=111111 and tab_id=1]; SQL state [null]; error code [0]; Result set already closed; nested exception is java.sql.SQLException: Result set already closed
java.sql.SQLException: Result set already closed
at weblogic.jdbc.wrapper.ResultSet.checkResultSet(ResultSet.java:103)
at weblogic.jdbc.wrapper.ResultSet.preInvocationHandler(ResultSet.java:66)
at weblogic.jdbc.wrapper.ResultSet_oracle_jdbc_driver_OracleResultSetImpl.next(Unknown Source)
at org.springframework.jdbc.core.JdbcTemplate$RowCallbackHandlerResultSetExtractor.extractData(JdbcTemplate.java:1239)
at org.springframework.jdbc.core.JdbcTemplate$1QueryStatementCallback.doInStatement(JdbcTemplate.java:338)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:282)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:348)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:352)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:356)
at com.telecom.dao.jdbc.offer.OfferApportionTemplateDaoJdbc.getOfferApportionTemplate(OfferApportionTemplateDaoJdbc.java:45)
at com.telecom.service.pojo.offer.OfferEJBManagerPojo.getOfferApportionTemplate(OfferEJBManagerPojo.java:1318)
at com.telecom.service.ejb.offer.OfferEJBBean.getOfferApportionTemplate(OfferEJBBean.java:613)
at com.telecom.service.ejb.offer.OfferEJB_udjv3i_EOImpl.getOfferApportionTemplate(OfferEJB_udjv3i_EOImpl.java:4050)
at com.telecom.service.ejb.offer.OfferEJB_udjv3i_EOImpl_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.ServerRequest.sendReceive(ServerRequest.java:166)
at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:290)
at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:247)
at com.telecom.service.ejb.offer.OfferEJB_udjv3i_EOImpl_814_WLStub.getOfferApportionTemplate(Unknown Source)
at com.telecom.webapp.action.offer.OfferAction.offerApportionTemplateUpload1(OfferAction.java:185)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:85)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:58)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:60)
at java.lang.reflect.Method.invoke(Method.java:391)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:274)
at com.telecom.webapp.action.BaseAction.execute(BaseAction.java:229)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1006)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:75)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6724)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3764)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2644)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
这是出错部分的代码:
List xlsFile = getJdbcTemplate().query(sql,new RowMapper(){
public Object mapRow(ResultSet rs, int rowNum)throws SQLException{
oracle.sql.CLOB clob = null;
Object obj = rs.getClob("xls_file");
//rs.previous();
// if(rs.getClob("xls_file").getClass().getName().equals("oracle.sql.CLOB")){
// //System.out.println("qx1"+(oracle.sql.CLOB)rs.getClob("xls_file"));
// clob = (oracle.sql.CLOB)rs.getClob("xls_file");}
// if(rs.getClob("xls_file").getClass().getName().equals("weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB")){
System.out.println("qxcwwwww+++++++++"+obj.getClass().getName()); try {
Method method = obj.getClass().getMethod("getVendorObj",new Class[]{});
//rs.previous();
clob = (oracle.sql.CLOB)method.invoke(obj, null);
}catch(Exception e){}
//}
return clob; }
});

解决方案 »

  1.   

    org.springframework.jdbc.UncategorizedSQLException: StatementCallback; uncategorized SQLException for SQL [select xls_file from OFFER_REP_TEMPLATE where template_id=111111 and tab_id=1]; SQL state [null]; error code [0]; Result set already closed; nested exception is java.sql.SQLException: Result set already closed
    java.sql.SQLException: Result set already closed异常很明显 结果集已经关闭了。。
      

  2.   

    resultSet已经关闭--
    System.out.println("qxcwwwww+++++++++"+obj.getClass().getName());
    以上的能打印出结果么?最好先定位那句出问题。
      

  3.   

    System.out.println("qxcwwwww+++++++++"+obj.getClass().getName());能打印出:weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB
      

  4.   

    StatementCallback; uncategorized SQLException for SQL [select * from tbl_Product]; SQL state [HY000]; error code [0]; [Microsoft][SQLServer 2000 Driver for JDBC]Underlying input stream returned zero bytes; nested exception is java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Underlying input stream returned zero bytes
    谁知道这个问题怎么解决啊