🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.java
Article #154028

(Java) SQLException: ResultSet is Close

#154028
From: J-23
Date: Fri, 20 Jun 2014 22:49
195 lines
8908 bytes
Witam.

Mam klasę w EXT-GWT używam jej do dynamicznego wczytania SQL, wszystko 
działa poprawnie, (pomimo że dostaje wyjątek)

public class LoaderDataHandler implements ActionHandler<LoaderData, 
LoaderDataResult> {

     private List<ModelData> LoaderDataLive(Boolean 
commitAfterTransaction, DBAction action, String sSQL) {
         List<ModelData> record = new ArrayList<ModelData>();
         Statement stat = null;
         ResultSet result = null;
         try {
             List<NaviSoftRealMeta> FieldName = null;
 
NaviSoftToolInformation.getConnection(commitAfterTransaction, action);
             if (commitAfterTransaction) {
                 if (NaviSoftToolInformation.getNocommitConnection() == 
null || NaviSoftToolInformation.getNocommitConnection().isClosed()) {
                     switch (action) {
                         case SELECT:
                             FieldName = 
NaviSoftToolsServer.getMetaData(sSQL);
                             stat = 
NaviSoftToolInformation.getConnectionDataSQL().createStatement();
                             break;
                         case INSERT:
                             FieldName = 
NaviSoftToolsServer.getMetaData(sSQL);
                             stat = 
NaviSoftToolInformation.getConnectionDataSQLINSERT().createStatement();
                             break;
                         case UPDATE:
                             FieldName = 
NaviSoftToolsServer.getMetaData(sSQL);
                             stat = 
NaviSoftToolInformation.getConnectionDataSQLUPDATE().createStatement();
                             break;
                         case DELETE:
                             FieldName = 
NaviSoftToolsServer.getMetaData(sSQL);
                             stat = 
NaviSoftToolInformation.getConnectionDataSQLDELETE().createStatement();
                             break;
                     }
                 } else {
                     FieldName = NaviSoftToolsServer.getMetaData(sSQL);
                     stat = 
NaviSoftToolInformation.getNocommitConnection().createStatement();
                 }
             } else {
                 FieldName = NaviSoftToolsServer.getMetaData(sSQL);
                 stat = 
NaviSoftToolInformation.getNocommitConnection().createStatement();
             }
             result = stat.executeQuery(sSQL);
             while (result.next()) {
                 BaseModel MDR = new BaseModel();
                 for (int i = 0; i < FieldName.size(); i++) {
 
MDR.set(FieldName.get(i).getAliasFieldName().toUpperCase(), 
result.getString(FieldName.get(i).getAliasFieldName().toUpperCase())); - 
tutaj jest wyjątek a się tyczy tego że przy przewijaniu Grida dostaję 
wyjątek że ResultSet is Close
                 }
                 record.add(MDR);
             }
         } catch (SQLException ex) {
 
Logger.getLogger(LoaderDataHandler.class.getName()).log(Level.SEVERE, 
null, ex);
         } catch (JSQLParserException ex) {
 
Logger.getLogger(LoaderDataHandler.class.getName()).log(Level.SEVERE, 
null, ex);
         } finally {
             if (stat != null) {
                 try {
                     stat.close();
                 } catch (SQLException ex) {
 
Logger.getLogger(LoaderDataHandler.class.getName()).log(Level.SEVERE, 
null, ex);
                 }
             }
         }
         return record;
     }

     @Override
     public Class<LoaderData> getActionType() {
         return LoaderData.class;
     }

     @Override
     public LoaderDataResult execute(LoaderData action, ExecutionContext 
context) throws NaviSoftDataLiveException {
         List<ModelData> record = new ArrayList<ModelData>();
         List<ModelData> tmpRecord = 
LoaderDataLive(action.getCommitAfterTransaction(), action.getAction(), 
action.getSQL());;
         int start = action.getConfig().getOffset();
         int limit = tmpRecord.size();
         if (action.getConfig().getLimit() > 0) {
             limit = Math.min(start + action.getConfig().getLimit(), limit);
         }
         for (int i = action.getConfig().getOffset(); i < limit; i++) {
             record.add(tmpRecord.get(i));
         }
         return new LoaderDataResult(new 
BasePagingLoadResult<ModelData>(record, action.getConfig().getOffset(), 
record.size()));
     }

     @Override
     public void rollback(LoaderData action, LoaderDataResult result, 
ExecutionContext context) throws DispatchException {
         throw new UnsupportedOperationException("Not supported yet.");
     }
}

Wyjątek:

cze 21, 2014 12:34:43 AM 
pl.cba.lukaszbaczek.server.Handler.LoaderDataHandler LoaderDataLive
SEVERE: null
org.firebirdsql.jdbc.FBSQLException: The resultSet is closed
	at 
org.firebirdsql.jdbc.AbstractResultSet.getField(AbstractResultSet.java:687)
	at 
org.firebirdsql.jdbc.AbstractResultSet.getString(AbstractResultSet.java:747)
	at sun.reflect.GeneratedMethodAccessor42.invoke(Unknown Source)
	at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at org.firebirdsql.pool.ResultSetHandler.invoke(ResultSetHandler.java:70)
	at $Proxy36.getString(Unknown Source)
	at 
pl.cba.lukaszbaczek.server.Handler.LoaderDataHandler.LoaderDataLive(LoaderDataHandler.java:75)
	at 
pl.cba.lukaszbaczek.server.Handler.LoaderDataHandler.execute(LoaderDataHandler.java:103)
	at 
pl.cba.lukaszbaczek.server.Handler.LoaderDataHandler.execute(LoaderDataHandler.java:34)
	at 
net.customware.gwt.dispatch.server.AbstractDispatch.doExecute(AbstractDispatch.java:81)
	at 
net.customware.gwt.dispatch.server.AbstractDispatch.execute(AbstractDispatch.java:68)
	at 
pl.cba.lukaszbaczek.server.NaviSoftDispatchServlet.execute(NaviSoftDispatchServlet.java:80)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:561)
	at 
com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208)
	at 
com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)
	at 
com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
	at 
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
	at 
org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
	at org.mortbay.jetty.Server.handle(Server.java:324)
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
	at 
org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
	at 
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
	at 
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)



Jeżeli nie przewijam suwakiem grida, wszystko jest ok.



Pozdrawiam
Technical Details
Message-ID: <lo2dp4$lip$1@node1.news.atman.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
From: J-23 <baczeklu@o2.pl>
Newsgroups: pl.comp.lang.delphi,pl.comp.lang.java
Subject: (Java) SQLException: ResultSet is Close
Date: Sat, 21 Jun 2014 00:49:07 +0200
Organization: ATMAN - ATM S.A.
Lines: 196
Message-ID: <lo2dp4$lip$1@node1.news.atman.pl>
NNTP-Posting-Host: 77-255-40-198.adsl.inetia.pl
Mime-Version: 1.0
X-Trace: node1.news.atman.pl 1403304548 22105 77.255.40.198 (20 Jun 2014 22:49:08 GMT)
X-Complaints-To: usenet@atman.pl
NNTP-Posting-Date: Fri, 20 Jun 2014 22:49:08 +0000 (UTC)
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.5.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit