|
0 / 0 / 0
Регистрация: 22.07.2010
Сообщений: 27
|
|
Вылетает ошибка ResultSet is closed !30.01.2007, 14:44. Показов 10606. Ответов 34
Метки нет (Все метки)
Здравствуйте!
БД IBM DB2 for OS/390(мэйнфрейм) Первая версия - лезет в ТАБЛИЦЫ DB2 на удалённую машину через Web сервер Tomcat, который установлен локально! (используется DB2 Client). Всё работает! Вторая версия - работа с теми же таблицами DB2 под WSAS( WSAS установлена на самом мейнфрейме- на удалённой машине). Первая JSP-ка отрабатывает, в которой тоже есть запрос к БД, а вторая выдаёт вот эту ошибку. Вот код программы
<%@ page contentType="text/html; charset=windows-1251" %>
<mailto:%@page %@page import="javax.servlet.*"%> <mailto:%@page %@page import="javax.servlet.http.*"%> <mailto:%@page %@page import="java.io.*"%> <mailto:%@page %@page import="java.sql.*"%> <mailto:%@page %@page import="java.util.*"%> <mailto:%@page %@page import="java.util.Date"%> <mailto:%@page %@page import="java.util.Random"%> <mailto:%@page %@page import="javax.sql.DataSource"%> <mailto:%@page %@page import="javax.naming.Context"%> <mailto:%@page %@page import="javax.naming.InitialContext"%> <mailto:%@page %@page import="javax.naming.NamingException"%> <mailto:%@page %@page import="java.sql.Connection"%> <mailto:%@page %@page import="java.sql.SQLException"%> <%! public static String Zamena_na_AYA(String source) { String Result; int Osn_chast = source.length()-7; Result=source.substring(0,Osn_chast)+"ая ж.д."; return Result; } %> <% String kod_dorogi = request.getParameter("KOD_DOR"); String INFORMATION = request.getParameter("USTAR"); String IDENTIFIKATOR= request.getParameter("Ident_pods"); String TIP_OBJEKTA = request.getParameter("Tip_objekta"); //System.out.println("kod_dorogi = "+kod_dorogi); //System.out.println("IDENTIFIKATOR = "+IDENTIFIKATOR); //System.out.println("TIP_OBJEKTA = "+TIP_OBJEKTA); String naim_dor=""; switch (Integer.parseInt(kod_dorogi)) { case 1: naim_dor="Октябрьской ж.д."; break; case 10: naim_dor="Калининградской ж.д."; break; case 17: naim_dor="Московской ж.д."; break; case 24: naim_dor="Горьковской ж.д."; break; case 28: naim_dor="Северной ж.д."; break; case 51: naim_dor="Северо-Кавказской ж.д."; break; case 58: naim_dor="Юго-Восточной ж.д."; break; case 61: naim_dor="Приволжской ж.д."; break; case 63: naim_dor="Куйбышевской ж.д."; break; case 76: naim_dor="Свердловской ж.д."; break; case 80: naim_dor="Южно-Уральской ж.д."; break; case 83: naim_dor="Западно-Сибирской ж.д."; break; case 88: naim_dor="Красноярской ж.д."; break; case 92: naim_dor="Восточно-Сибирской ж.д."; break; case 94: naim_dor="Забайкальской ж.д."; break; case 96: naim_dor="Дальневосточной ж.д."; break; case 99: naim_dor="Сахалинской ж.д."; break; } //System.out.println("naim_dor = "+naim_dor); //System.out.println("kod_dorogi = "+kod_dorogi ); // Подключение к базе данных мэйнфрейма с файлом настройки //String bdName = getServletContext().getInitParameter("DB N"); //String UserID = getServletContext().getInitParameter("UI D"); //String Password = getServletContext().getInitParameter("PW D"); //Квалификатор базы данных //String Qualifier_OTT = getServletContext().getInitParameter("QU ADB"); //String Driver = getServletContext().getInitParameter("DR V"); //-------- НИК Cols; i++) { String Tmp=""; Tmp=Rst3.getString(i); if (Tmp==null) { MASSIV_SQL_PROGRAMMA[n_records][i]=""; } else { MASSIV_SQL_PROGRAMMA[n_records][i]=Tmp.trim(); } //String Tmp=Rst.getString(i).trim(); //MASSIV_SQL_PROGRAMMA[n_records][i]=Tmp.trim(); //System.out.println("MASSIV_SQL_PROGRAMMA["+n_records+"]["+i+"] = "+MASSIV_SQL_PROGRAMMA[n_records][i]); } n_records++; } Rst3.close(); ResultSet Rst4=null; String SQL_TO_ETALON[]; SQL_TO_ETALON = new String[5000]; String MASSIV_SQL_PROGRAMMA_ETALON[][]; MASSIV_SQL_PROGRAMMA_ETALON = new String[5000][4]; for(int i=0;i<5000;i++) { for (int j=0;j<4;j++) { MASSIV_SQL_PROGRAMMA_ETALON[i][j]=""; } } for (int i=0;i<n_records;i++) { if ((IDENTIFIKATOR.equals("***") || IDENTIFIKATOR.equals("DOD"))&&TIP_OBJEKT A.equals("P") ) { SQL_TO_ETALON[i]="SELECT E_NM_OBJ, E_DL_MOD,E_DATE_SOZD FROM ASP2QB.SKFE_ETALON WHERE E_TYP_OBJ='"+TIP_OBJEKTA+"' AND E_ID_SS='"+IDENTIFIKATOR+"' AND E_NM_OBJ='"+MASSIV_SQL_PROGRAMMA[i][1]+"' WITH UR"; } else { SQL_TO_ETALON[i]="SELECT E_NM_OBJ FROM ASP2QB.SKFE_ETALON WHERE E_TYP_OBJ='"+TIP_OBJEKTA+"' AND E_ID_SS='"+IDENTIFIKATOR+"' AND E_NM_OBJ='"+MASSIV_SQL_PROGRAMMA[i][1]+"' WITH UR"; } //System.out.println("SQL_TO_ETALON["+i+"] = "+SQL_TO_ETALON[i]); //System.out.println(); } int n_records1=0; for (int i=0;i<n_records;i++) { Rst4 = stmt.executeQuery (SQL_TO_ETALON[i]); numCols = rsmd.getColumnCount (); while (Rst4.next()) { for (int j=1; j<=numCols; j++) { String Tmp=Rst4.getString(j).trim(); MASSIV_SQL_PROGRAMMA_ETALON[n_records1][j]=Tmp.trim(); //System.out.println("MASSIV_SQL_PROGRAMMA _ETALON["+n_records1+"]["+j+"] = "+Tmp); } n_records1++; } } Rst4.close(); //Закрыть оператор stmt.close(); // Закрыть соединение con.close(); %> <% if (MASSIV_SQL_PROGRAMMA[0][1].equals("")) {%> <html> <head> <% if (TIP_OBJEKTA.equals("P")) {%> <title>Расхождение длины и/или даты программ по <%=naim_dor%></title> <%} %> <% if (TIP_OBJEKTA.equals("M")) {%> <title>Расхождение массивов НСИ по <%=naim_dor%></title> <%} %> <% if (TIP_OBJEKTA.equals("T")) {%> <title>Расхождение таблиц НСИ по <%=naim_dor%></title> <%} %> <% if (TIP_OBJEKTA.equals("D")) {%> <title>Расхождение DBRM по <%=naim_dor%></title> <%} %> <META http-equiv=pragma content=no-cashe> <META http-equiv=expires content="Sat, 05 Nov 2004 00:00:00 GMT <META content="Web-ARM GVC" name=description> <META content="Arm-SKFE, GVC" name=keywords> <META http-equiv=Content-Ty 0;j<n_records1;j++) { if (MASSIV_SQL_PROGRAMMA[i][1].equals(MASSIV_SQL_PROGRAMMA_ETALON[j][1])) { int k=0; int d=0; if (MASSIV_SQL_PROGRAMMA[i][2].equals(MASSIV_SQL_PROGRAMMA_ETALON[j][2])) { k=1; //Длина равна } if (MASSIV_SQL_PROGRAMMA[i][3].equals(MASSIV_SQL_PROGRAMMA_ETALON[j][3])) { d=1; //Дата равна } %> <tr> <td width="25%" bgcolor="#0073E6" rowspan="2 <font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif <%=i+1%></font></td> <td width="25%" bgcolor="#0073E6" rowspan="2 <font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif <%=MASSIV_SQL_PROGRAMMA_ETALON[j][1]%></font></td> <td width="25%" bgcolor="#0073E6 <font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif <%=MASSIV_SQL_PROGRAMMA_ETALON[j][2]%></font></td> <td width="25%" bgcolor="#0073E6 <font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif <%=MASSIV_SQL_PROGRAMMA_ETALON[j][3]%></font></td> </tr> <tr> <% if (k==0) {%> <td width="25%" bgcolor="#FF0000 <font color="#000000" face="Verdana, Arial, Helvetica, sans-serif <%=MASSIV_SQL_PROGRAMMA[i][2]%> </font></td> <% } else {%> <td width="25%" bgcolor="#0073E6 <font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif <%=MASSIV_SQL_PROGRAMMA[i][2]%></font></td> <% } if (d==0) {%> <td width="25%" bgcolor="#FF0000 <font color="#000000" face="Verdana, Arial, Helvetica, sans-serif <%=MASSIV_SQL_PROGRAMMA[i][3]%> </font></td> </tr> <tr> <td colspan="4" bgcolor="#0073E6 </td> </tr> <tr> <td colspan="4" bgcolor="#0073E6 </td> </tr> <% } else {%> <td width="25%" bgcolor="#0073E6 <font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif <%=MASSIV_SQL_PROGRAMMA[i][3]%></font></td> </tr> <tr> <td colspan="4" bgcolor="#0073E6 </td> </tr> <tr> <td colspan="4" bgcolor="#0073E6 </td> </tr> <% } } } } %> </table> <table width="70%" border="0" align="center <tr> <td align="center <div align="rleft <input type="button" value="Закрыть окно" title="Нажмите на кнопку для того чтобы закрыть окно" onClick="Escape() </div></td> </tr> </table> </body> </html> <% } else {%> <html> <head> <% if (TIP_OBJEKTA.equals("M")) {%> <title>Расхождение массивов НСИ по <%=naim_dor%></title> <%} %> p;<% break; } else { if (j==(n_records1-1)) { System.out.println("J= "+j); %> <tr> <td width="25%" bgcolor="#0073E6 <font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif <%=i+1%></font></td> <td width="25%" bgcolor="#0073E6 <font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif <%=MASSIV_SQL_PROGRAMMA_ETALON[j][1]%> отсутствует в эталоне</font></td> </tr> <% } } } } %> </table> <table width="70%" border="0" align="center <tr> <td align="center <div align="rleft <input type="button" value="Закрыть окно" title="Нажмите на кнопку для того чтобы закрыть окно" onClick="Escape() </div></td> </tr> </table> </body> </html> <% } } } catch (SQLException exe) { while (exe != null) { //System.out.println ("***check_user.jsp. Error. SQLException! ***"); //System.out.println ("SQLState: " + exe.getSQLState()); String ErrorMessage = exe.getMessage(); //System.out.println ("Message: " + ErrorMessage); //System.out.println ("Vendor: " + exe.getErrorCode()); //Выдаем HTML для информации об ошибке %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN <!-- saved from url=(0037) --> <HTML> <HEAD> <TITLE>МЭЙНФРЕЙМ НЕ РАБОТАЕТ или во время выполнения SQL произошла ошибка</TITLE> <META http-equiv=pragma content=no-cashe> <META http-equiv=expires content="Won, 10 Oct 2006 00:00:00 GMT <META content="Web-ARM GVC" name=description> <META content="Arm-SKFE, GVC" name=keywords> <META http-equiv=Content-Type content="text/html; charset=windows-1251 <META content="MSHTML 6.00.2715.400" name=GENERATOR></HEAD> </HEAD> <BODY> <h1 align="center МЭЙНФРЕЙМ НЕ РАБОТАЕТ или во время выполнения SQL произошла ошибка<BR
0
|
|
| 30.01.2007, 14:44 | |
|
Ответы с готовыми решениями:
34
Ошибка: org.postgresql.util.PSQLException: ResultSet закрыт Ошибка Connection Closed Gracefully
|
|
paradise
|
|
| 17.02.2007, 16:04 | |
|
Мне приходила в голову такая мысль. Но я не могу придумать ситуацию, при которой Statement так себе будет вести.
Однако попробовать стоит. Автор, пересоздай Statement. |
|
|
paradise
|
|
| 17.02.2007, 16:09 | |
|
Хотя если предположить, что после закрытия третьего ResultSet драйвер возвращает управление сервлету до того, как Rs был закрыт, во что я готов поверить, то выходит, что сервлет пытается открыть второй ResultSet на одном Statement'e, чего делать нельзя.
Определенно следует попробовать использование двух разных Statement. |
|
|
mishgun
|
|
| 18.02.2007, 00:36 | |
|
нехай попробует а объяснять непонятки потом будем ЛОЛ
|
|
|
0 / 0 / 0
Регистрация: 22.07.2010
Сообщений: 27
|
|
| 18.02.2007, 23:48 [ТС] | |
|
Здравствуйте!
В понедельник буду пробовать! С уважением Владимир!
0
|
|
|
paradise
|
|
| 19.02.2007, 05:24 | |
|
Я ставлю на то, что мы не увидим автора на форуме после того, как у все заработает.
|
|
|
0 / 0 / 0
Регистрация: 22.07.2010
Сообщений: 27
|
||
| 19.02.2007, 13:11 [ТС] | ||
Скорее всего был винован Statement. который закрывался! Вот то что было - for (int i=0;i<n_records;i++) { Rst4 = stmt.executeQuery (SQL_TO_ETALON[i]); numCols = rsmd.getColumnCount (); while (Rst4.next()) { for (int j=1; j<=numCols; j++) { String Tmp=Rst4.getString(j).trim(); MASSIV_SQL_PROGRAMMA_ETALON[n_records1][j]=Tmp.trim(); //System.out.println("MASSIV_SQL_PROGRAMMA _ETALON["+n_records1+"]["+j+"] = "+Tmp); } n_records1++; } } Rst4.close(); //Закрыть оператор stmt.close(); Так вот System.out.println после вот этой строчки( Rst4 = stmt.executeQuery (SQL_TO_ETALON[i]); ) ещё работал. После вот этой - numCols = rsmd.getColumnCount (); УЖЕ НЕТ! Теперь сделал вот так! Помучившись ещё 2 часа! //ResultSet Rst4; //Rst4=null; Statement stmtt[]; stmtt = new Statement[5000]; //stmt1 = con.createStatement (); ResultSet Rstt[]; Rstt = new ResultSet[5000]; for (int i=0;i<n_records;i++) { Rstt[i]=null; } ResultSetMetaData rsmdd[]; rsmdd = new ResultSetMetaData[5000]; for(int i=0;i<5000;i++) { for (int j=0;j<4;j++) { MASSIV_SQL_PROGRAMMA_ETALON[i][j]=""; } } for (int i=0;i<n_records;i++) { if ((IDENTIFIKATOR.equals("***") || IDENTIFIKATOR.equals("DOD"))&&TIP_OBJEKT A.equals("P") ) { SQL_TO_ETALON[i]="SELECT E_NM_OBJ, E_DL_MOD,E_DATE_SOZD FROM ASP2QB.SKFE_ETALON WHERE E_TYP_OBJ='"+TIP_OBJEKTA+"' AND E_ID_SS='"+IDENTIFIKATOR+"' AND E_NM_OBJ='"+MASSIV_SQL_PROGRAMMA[i][1]+"' WITH UR"; } else { SQL_TO_ETALON[i]="SELECT E_NM_OBJ FROM ASP2QB.SKFE_ETALON WHERE E_TYP_OBJ='"+TIP_OBJEKTA+"' AND E_ID_SS='"+IDENTIFIKATOR+"' AND E_NM_OBJ='"+MASSIV_SQL_PROGRAMMA[i][1]+"' WITH UR"; } //System.out.println("PRUVETISHE VOLCHARAM111!!!"); //System.out.println("SQL_TO_ETALON["+i+"] = "+SQL_TO_ETALON[i]); //System.out.println(); } int n_records1=0; int numCols1=0; //System.out.println("PRUVETISHE VOLCHARAM5555!!!"); //System.out.println("PRUVETISHE VOLCHARAM6666!!!"); for (int i=0;i<n_records;i++) { //System.out.println("n_records = "+n_records); //System.out.println("PRUVETISHE VOLCHARAM7777!!!"); //System.out.println("PRUVETISHE VOLCHARAM8888!!!"); stmtt[i] = con.createStatement (); Rstt[i] = stmtt[i].executeQuery (SQL_TO_ETALON[i]); //System.out.println("PRUVETISHE VOLCHARAM9999!!!"); rsmdd[i] = Rstt[i].getMetaData (); numCols1 = rsmdd[i].getColumnCount (); //System.out.println("PRUVETISHE
0
|
||
|
0 / 0 / 0
Регистрация: 22.07.2010
Сообщений: 27
|
|
| 19.02.2007, 13:32 [ТС] | |
|
Хотя врят ли это даже Statement
Rst4 = stmt.executeQuery (SQL_TO_ETALON[i]); numCols = rsmd.getColumnCount (); Это скорее всего переменная rsmd, которая умирает когда я закрываю Rst3 Может быть даже так! P.S. Только непонятно почему, если она то на персоналке из-за чего работает? Там тоже ведь должна подыхать! Хм.........
0
|
|
|
paradise
|
|
| 19.02.2007, 18:50 | |
|
Мда. Я надесь, автор сделает вывод относительно того, почему подобная проблема появилась и почему ее решение заняло больше недели. Если нет, то мы будем ждать его возвращения с новыми вопросами (лично я ставлю на OutOfMemoryError)
|
|
|
mishgun
|
|
| 19.02.2007, 22:02 | |
|
Проблема главная в нагромождении кода которая делает его абсолютно нечитабельным...
Автор прекращайте заниматься подобной фигней - это абсолютно неправильный подход для OOП. Ващу jsp можно было разбить на 1. servlet который принимает запрос и параметры этого запроса из jsp и передает эти параметры в : 2. DAO объект который принимает параметры запросы - делает выборку из БД и возвращает это в сервлет 3. jsp страница - сервлет формирует response и передает это на страницу где пристутсвуют либо кастом таги либо скриплеты для отобрадения результата. 4. serialized object AKA JavaBean который служит для работы между сервлетом и DAO (для того чтоб не передавать в методы DAO кучу стрингов интеджерз объектов а свой Bean который будет содержать это всё и в DAO уже вытаскивать из бина и конструировать Statements на основе данных из бина). Когда этот процесс пройдет удачно советую обратиться в сторону struts, hibernate, springs, JDO, EJB 3.0(если jdk 5 и выше) или EJB 2.0(если jdk 1.4) - на выбор. Это существенно сократит и упростит создание web-приложений. |
|
|
paradise
|
||
| 19.02.2007, 22:49 | ||
Сомневаюсь, что "нагромождение" будет полезным для подходов, отличных от ООП . А автору бы хватило для начала вынесит бизнес (если это можно так назвать) из jsp. Но в общем и целом, поддерживаю.
|
||
|
sergioK
|
||
| 21.02.2007, 11:39 | ||
|
Что значит скорей всего ?, поставте брэк пойнт после закрытия Rst3 , и увидите помирает переменная или нет , потом что это за имена Rst3 ,Rst4? поосмомысленнее надо бы ,
|
||
|
paradise
|
||
| 22.02.2007, 00:50 | ||
Жжешь! Это пять! Ты думаешь автор такого когда может поставить нормальный брэкпоинт в jsp? Ты читал что выше писали? |
||
|
sergioK
|
||
| 22.02.2007, 03:02 | ||
|
Естесно читал,
Нервы у меня слабые :lol: ну есть же предел Сама по себе фраза "наверно ошибка там" или "в среду работало а во вторник нет" ну как на это реагировать ? Автор, ничего личного но вам следует изучить основы программинга, без них это все равно что заниматься переводом Байрона, не выучив граматики английского языка
|
||
|
paradise
|
|
| 23.02.2007, 22:25 | |
|
Понимаю
|
|
| 23.02.2007, 22:25 | |
|
Ошибка cannot perform this operation on a closed dataset Ошибка в программе //Connection Closed Gracefully Ошибка Connection Closed Gracefully што делать Ошибка Connection Closed Gracefully, что делать? БД Access ошибка Cannot Perform this operation on a closed dataset Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|