🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.java
3 messages
3 total messages Started by J-23 Fri, 20 Jun 2014 22:49
(Java) SQLException: ResultSet is Close
#154028
Author: 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
Re: (Java) SQLException: ResultSet is Close
#154029
Author: konsul41
Date: Mon, 23 Jun 2014 06:30
7 lines
1377 bytes
Użytkownik "J-23" <baczeklu@o2.pl> napisał w wiadomości 
news:lo2dp4$lip$1@node1.news.atman.pl...
> Witam.
>
Przepraszam Cię ale dlaczego piszesz o Javie na grupie o Delphi i nawet słowa 
przepraszam albo pocałujcie mnie w d... 
Re: (Java) SQLException: ResultSet is Close
#154030
Author: J-23
Date: Mon, 23 Jun 2014 10:22
18 lines
1767 bytes
W dniu 23.06.2014 08:30, konsul41@wp.pl pisze:
>
> Użytkownik "J-23" <baczeklu@o2.pl> napisał w wiadomości
> news:lo2dp4$lip$1@node1.news.atman.pl...
>> Witam.
>>
> Przepraszam Cię ale dlaczego piszesz o Javie na grupie o Delphi i nawet
> słowa przepraszam albo pocałujcie mnie w d...
Masz racje ale pisałem już kilka razy, za każdym razem albo prawie za 
każdym pisałem że pisze dla tego że tu jest większy ruch jak na Grupie o 
javie stąd moje pytania są kierowane na grupę o Javie i tutaj. Tym razem 
nie napisałem że piszę tutaj bo "jest większy ruch" tylko zaznaczyłem że 
chodzi o java w ten sposób "(Java)" w temacie.

Problem rozwiązałem dzięki tej informacji
http://stackoverflow.com/questions/935511/how-can-i-avoid-resultset-is-closed-exception-in-java

Pozdrawiam
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads