Я сталкиваюсь с проблемой при выполнении запросов. Я использую тот же resultSet и оператор для выполнения всех запросов. Теперь я сталкиваюсь с прерывистым SQlException, говоря, что соединение уже закрыто. Теперь мы должны либо иметь отдельный resultSet для каждого запроса, либо Есть блокировка, как структура. Кто-нибудь может сказать, что лучше. Я думаю, что введение блокировок замедлит процесс. Я прав?
Обновление:
Чтобы быть более понятным. Ошибка может произойти, потому что блок finally вызывается до того, как все запросы будут выполнены, и соединение будет закрыто, и будет выдано исключение.
Это исключение, которое я получаю
java.sql.SQLException: соединение имеет
уже был закрыт. в
weblogic.jdbc.wrapper.PoolConnection.checkConnection (PoolConnection.java:81)
в
weblogic.jdbc.wrapper.ResultSet.preInvocationHandler (ResultSet.java:68)
в
weblogic.jdbc.wrapper.ResultSet_com_informix_jdbc_IfxResultSet.next (Неизвестно
Источник) в
com.test.test.execute (test.java:76)
в
org.apache.struts.action.RequestProcessor.processActionPerform (RequestProcessor.java:413)
в
org.apache.struts.action.RequestProcessor.process (RequestProcessor.java:225)
в
org.apache.struts.action.ActionServlet.process (ActionServlet.java:1858)
в
org.apache.struts.action.ActionServlet.doPost (ActionServlet.java:459)
в
javax.servlet.http.HttpServlet.service (HttpServlet.java:760)
в
javax.servlet.http.HttpServlet.service (HttpServlet.java:853)
в
weblogic.servlet.internal.ServletStubImpl $ ServletInvocationAction.run (ServletStubImpl.java:1077)
в
weblogic.servlet.internal.ServletStubImpl.invokeServlet (ServletStubImpl.java:465)
в
weblogic.servlet.internal.ServletStubImpl.invokeServlet (ServletStubImpl.java:348)
в
weblogic.servlet.internal.WebAppServletContext $ ServletInvocationAction.run (WebAppServletContext.java:7047)
в
weblogic.security.acl.internal.AuthenticatedSubject.doAs (AuthenticatedSubject.java:321)
в
weblogic.security.service.SecurityManager.runAs (SecurityManager.java:121)
в
weblogic.servlet.internal.WebAppServletContext.invokeServlet (WebAppServletContext.java:3902)
в
weblogic.servlet.internal.ServletRequestImpl.execute (ServletRequestImpl.java:2773)
в
weblogic.kernel.ExecuteThread.execute (ExecuteThread.java:224)
в
weblogic.kernel.ExecuteThread.run (ExecuteThread.java:183)
Пример кода:
ResultSet rst=null;
Statement stmt=null;
Connection con=DBConnection.getConnection();
stmt=con.createStatement();
rst=stmt.executeQuery("select * from dual");
while(rst.next())
{ : ://Some code }
rst=stmt.executeQuery("select * from doctor where degree="BM");
while(rst.next())
{ //blah blah }
finally
{
//close con,rst and stmt
}