Я столкнулся с проблемой при выполнении запросов. Я использую один и тот же набор результатов и оператор для исключения всех запросов. Теперь я сталкиваюсь с прерывистым SQlException о том, что соединение уже закрыто. Теперь мы должны либо иметь отдельный набор результатов для каждого запроса, либо иметь блокировку, как Структура. Кто-нибудь может сказать, что лучше. Я думаю, введение блокировок замедлит процесс. Я прав?
Обновление: для большей ясности: ошибка может произойти из-за того, что блок finally вызывается до того, как будут выполнены все запросы, соединение будет закрыто и будет выдано исключение.
Это исключение, которое я получаю
java.sql.SQLException: соединение уже закрыто. по адресу weblogic.jdbc.wrapper.PoolConnection.checkConnection (PoolConnection.java:81) по адресу weblogic.jdbc.wrapper.ResultSet.preInvocationHandler (ResultSet.java:68) по адресу weblogic.jdbc.wrapper.ResultSet_java_com_informance (неизвестный) .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 (ServletStub10Implava). internal.ServletStubImpl.invokeServlet (ServletStubImpl.java:465) в webl ogic.servlet.internal.ServletStubImpl.invokeServlet (ServletStubImpl.java:348) по адресу weblogic.servlet.internal.WebAppServletContext $ ServletInvocationAction.run (WebAppServletContext.java:7047) по адресу weblogic.Ashentication.Authentication.Authentication.Authentication.AuthenticationServletContext. java: 321) в weblogic.security.service.SecurityManager.runAs (SecurityManager.java:121) в weblogic.servlet.internal.WebAppServletContext.invokeServlet (WebAppServletContext.java:3902) в weblogic.servletcrequute.inestplast. .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
}