|
|
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
День добрый, извиняюсь за то что отвлекаю(сам ненавижу когда люди не могут и ленятся сами разобраться в матчасти), но уже пол месяца не могу решить проблему. При обращении к хранимой процедуре клиента получаю два Resultset. С первым все хорошо, но вот второй состоит из 20 строк, разработчики клиента утверждают что процедура возвращает около 1000. Основной код Connect connectObject = new Connect(); Connection connectionToPool = null; CallableStatement procedure = null; ResultSet table = null; int rowCounter; SOATO answer = new SOATO(); int counter = 1; try { connectObject.init(POOL); connectionToPool = connectObject.getConnection(); procedure = connectionToPool.prepareCall("{call procedure()}"); procedure.execute(); while (true) { rowCounter = procedure.getUpdateCount(); if (rowCounter > 0) { // This is update counter procedure.getMoreResults(); continue; } if (rowCounter == 0) { // DDL command or 0 updates procedure.getMoreResults(); continue; } table = procedure.getResultSet(); // If we reached here, we have a // set of data, or no more results if (table != null) { switch (counter) { case 1: // Area tables answer.areaDataHandler(table); counter++; break; case 2: // Region tables answer.regionDataHandler(table); counter++; break; default: break; } procedure.getMoreResults(); continue; } break; // No more results } } areaDataHandler regionDataHandler() аналогичен areaDataHandler() public void areaDataHandler(ResultSet table) throws SQLException { while (table.next()) { Area temp = new Area(); temp.setKodobl(table.getInt("kodobl")); temp.setNameobl(table.getString("nameobl")); area.add(temp); } } База данных MSSQL 2000, использовался сторонний jdbc драйвер ибо мелкомягкие прекратили поддержку 2000, а драйвер к этой версии бд изъяли. з.ы. От безысходности создал вопросы на хешкоде и переполнениистека, может кого на мысль натолкнет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 10:36 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
Nekto_ByС первым все хорошо, но вот второй состоит из 20 строк, разработчики клиента утверждают что процедура возвращает около 1000. Верить, в наше время, нельзя никому. Порой даже, самому себе. (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 10:56 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
Код вынос мозга. На других сайтах почему-то не поленились код оформить. while (true) ? Два соврешенно разных сценария? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 11:00 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
Не тот случай, как я уже отвечал на переполнении там скорее их сторона нуждается в работоспособности проекта чем наша) Да и они то же знают о проблеме и пытаются найти решение вместе со мной( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 11:02 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
Почему драйвер "изъяли" тоже вопрос открытый http://www.microsoft.com/en-us/download/details.aspx?id=1511 http://msdn.microsoft.com/en-US/data/ff928484 Но для 2000, JTDS, все же должен быть лучше. Много там всяких настроек полезных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 11:02 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
Nekto_ByНе тот случай, как я уже отвечал на переполнении там скорее их сторона нуждается в работоспособности проекта чем наша) Да и они то же знают о проблеме и пытаются найти решение вместе со мной( Пусть логи сервера посмотрят при выполнении запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 11:03 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczКод вынос мозга. На других сайтах почему-то не поленились код оформить. while (true) ? Два соврешенно разных сценария? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. Код и там и тут тупо скопипастил из проекта так что хз чего он тут так вставился. Это взял с официальной документации, насколько я понял необходимы что бы выйти на ResultSet, ибо помимо него возвращаются всякие указатели и счетчики(для чего они нужны я не знаю) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 11:12 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczПочему драйвер "изъяли" тоже вопрос открытый http://www.microsoft.com/en-us/download/details.aspx?id=1511 http://msdn.microsoft.com/en-US/data/ff928484 Но для 2000, JTDS, все же должен быть лучше. Много там всяких настроек полезных. А попробуйте скачать))) Скачивается ридми, утверждающий что пора переходить на новую версию) А логи ничего не пишут, типо все ок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 11:15 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
Nekto_ByА попробуйте скачать))) Скачивается ридми, утверждающий что пора переходить на новую версию) А логи ничего не пишут, типо все ок Ржака. :) MS в своём индусском стиле. Копирайтеры заняты, так они драйвер на readme подменили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 11:17 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
Nekto_ByКод и там и тут тупо скопипастил из проекта так что хз чего он тут так вставился. Это взял с официальной документации, насколько я понял необходимы что бы выйти на ResultSet, ибо помимо него возвращаются всякие указатели и счетчики(для чего они нужны я не знаю) То есть, вот так принципиально работать не будет? Не нужно кривой код оправдывать спецификациями. Код: java 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 11:19 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczПочему драйвер "изъяли" тоже вопрос открытый http://www.microsoft.com/en-us/download/details.aspx?id=1511 http://msdn.microsoft.com/en-US/data/ff928484 Но для 2000, JTDS, все же должен быть лучше. Много там всяких настроек полезных. И кстати о настройках, я уже подумывал может в JTDS собака зарыта? Может ли он как бы порционно отдавать инфу и если да как это проверить, а затем исправить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 11:19 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
area это что за переменная? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 11:19 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczNekto_ByКод и там и тут тупо скопипастил из проекта так что хз чего он тут так вставился. Это взял с официальной документации, насколько я понял необходимы что бы выйти на ResultSet, ибо помимо него возвращаются всякие указатели и счетчики(для чего они нужны я не знаю) То есть, вот так принципиально работать не будет? Не нужно кривой код оправдывать спецификациями. Код: java 1. 2. 3. 4. Ну тут да мой косяк, каюсь) Хотя с другой стороны вдруг в перспективе понадобиться эти дополнительные фитчи из ответа по отдельности достовать, так что пускай так будет. з.ы. И да не стоит уходить от темы, есть ли идея где и как он обрезается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 11:22 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
Попробуйте в prepareCall задать другие параметры для курсора http://jtds.sourceforge.net/resultSets.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 11:28 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
Nekto_ByИ да не стоит уходить от темы, есть ли идея где и как он обрезается? Есть идея, что без отладки и логирования это всё гадание на кофейной гуще. Попробуйте хотя бы для JTDS настроить trace логирование и почитать почему именно прекращается чтение курсора. catch блок адекватный? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 11:30 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
А если у вас принципиально нет доступа к базе, как вы вообще тестируете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 11:33 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Процедура возвращает 2 выборки первая содержит области(ложу в класс area), вторая содержит районы(ложу в класс region) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 11:38 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
Nekto_ByПроцедура возвращает 2 выборки первая содержит области(ложу в класс area), вторая содержит районы(ложу в класс region) На какой из моих вопросов это отвечает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 11:43 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz catch блок адекватный? Да адекватный, зарекомендовал себя в других проектах где большее количество выборок и больше данных в каждой из них Blazkowicz А если у вас принципиально нет доступа к базе, как вы вообще тестируете? пишем сервис ложим на сервер, пишем клиента и на локальной машине и смотрим результат работы, выскочила проблема смотрим лог сервера, все в логе хорошо - сидим гадаем( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 11:44 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczНа какой из моих вопросов это отвечает? Blazkowiczarea это что за переменная? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 11:45 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
Nekto_ByBlazkowiczНа какой из моих вопросов это отвечает? пропущено... ОК. Я думал вы программист, ожидал ответа программиста. А вам видать просто поболтать? Давайте сделаем усилие и как программист программисту, расскажем про переменную area. Я не ваш бизнес аналитик, рассказывать где какая у вас предметная область мне не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 11:57 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczNekto_Byпропущено... ОК. Я думал вы программист, ожидал ответа программиста. А вам видать просто поболтать? Давайте сделаем усилие и как программист программисту, расскажем про переменную area. Я не ваш бизнес аналитик, рассказывать где какая у вас предметная область мне не нужно. Так а что про неё говорить? Переменная содержит два поля, соответствующие полям возвращаемым в первом наборе, и гетеры сетеры для них ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 12:24 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
Nekto_ByТак а что про неё говорить? Переменная содержит два поля, соответствующие полям возвращаемым в первом наборе, и гетеры сетеры для них Класс Area содержит поля и акцессоры. Переменная area это не класс. Это переменная она не может содержать полей. Это ваш код? Мне для вас его цитировать нужно? Код: java 1. Что такое area? List или Set? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 12:28 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczNekto_ByТак а что про неё говорить? Переменная содержит два поля, соответствующие полям возвращаемым в первом наборе, и гетеры сетеры для них Класс Area содержит поля и акцессоры. Переменная area это не класс. Это переменная она не может содержать полей. Это ваш код? Мне для вас его цитировать нужно? Код: java 1. Что такое area? List или Set? Извини не понял про какую часть кода ты говорил(думал про первый спойлер), area это поле - ArrayList<Area> area ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 12:53 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
Nekto_ByИзвини не понял про какую часть кода ты говорил(думал про первый спойлер), area это поле - ArrayList<Area> area А откуда уверенность что проблема в ResultSet, а не где-то в чтени ArrayList и выводе этого списка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 12:59 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
Nekto_ByИзвини не понял про какую часть кода ты говорил(думал про первый спойлер) Там нет переменной area ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 13:00 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczNekto_ByИзвини не понял про какую часть кода ты говорил(думал про первый спойлер) Там нет переменной area ;) Да, но есть метод areaDataHandler и я решил, что он тебя смутил. Короче мне надо быть более внимательным) BlazkowiczА откуда уверенность что проблема в ResultSet, а не где-то в чтени ArrayList и выводе этого списка? Причин 2: 1. По такой же технологии в других проектах все норм. 2. Я отловил, что ResultSet возвращает только 20 строк(getRow()). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 13:23 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
Nekto_By1. По такой же технологии в других проектах все норм. Assumption is the mother of all fuck ups. Nekto_ByЯ отловил, что ResultSet возвращает только 20 строк(getRow()). getRow() в приведенном коде отсутсвует. Резюмируем. Ничего криминального что бы привело к проблеме в указанном коде нет. catch не приведен. Сделать вывод о том получает ли он исключение или все же next() возвращает false нельзя. Достаточного для анализа логирования не ведется ни со стороны JTDS, ни со стороны SQL Server. Исходника хранимой процедуры нет как и тестовой базы для того чтобы повторить проблему. Тему можно не продолжать, пока не будет новой информации из логов, отладки или тестов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 13:38 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczNekto_By1. По такой же технологии в других проектах все норм. Assumption is the mother of all fuck ups. Nekto_ByЯ отловил, что ResultSet возвращает только 20 строк(getRow()). getRow() в приведенном коде отсутсвует. Резюмируем. Ничего криминального что бы привело к проблеме в указанном коде нет. catch не приведен. Сделать вывод о том получает ли он исключение или все же next() возвращает false нельзя. Достаточного для анализа логирования не ведется ни со стороны JTDS, ни со стороны SQL Server. Исходника хранимой процедуры нет как и тестовой базы для того чтобы повторить проблему. Тему можно не продолжать, пока не будет новой информации из логов, отладки или тестов. блог catch реализованный в первом спойлере } catch (SQLException e) { e.toString(); } finally { if (table != null) { try { table.close(); } catch (SQLException e) { e.toString(); } } if (procedure != null) { try { procedure.close(); } catch (SQLException e) { e.toString(); } } if (connectionToPool != null) { connectObject.releaseConnection(connectionToPool); } } return answer; } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 13:47 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
Nekto_ByBlazkowicz catch блок адекватный? Да адекватный, зарекомендовал себя в других проектах где большее количество выборок и больше данных в каждой из них Код: java 1. 2. 3. Blazkowicz упал от смеха со стула и больше из под стола не появлялся. Удачной отладки! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 13:53 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczNekto_Byпропущено... Да адекватный, зарекомендовал себя в других проектах где большее количество выборок и больше данных в каждой из них Код: java 1. 2. 3. Blazkowicz упал от смеха со стула и больше из под стола не появлялся. Удачной отладки! Что смешного? Если ошибка и выпадет, то по идее должна в лог написать,понимаю что не стэкттрэйс,но что бы заметить ошибку достаточно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 14:56 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
Nekto_By Что смешного? Если ошибка и выпадет, то по идее должна в лог написать,понимаю что не стэкттрэйс,но что бы заметить ошибку достаточно. Я даже не знаю как без сарказма ответить... на такое. Базы нет. Отладчика нет. Документации нет. Населена роботами. Вызов метода toString() ничего не делает. Возвращает результат, который ты не используешь. Ни в какие логи он не пишет. Называть такой код адекватным и использовать во всех проектах, это какая-то запредельная самоуверенность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 15:05 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczNekto_By Что смешного? Если ошибка и выпадет, то по идее должна в лог написать,понимаю что не стэкттрэйс,но что бы заметить ошибку достаточно. Я даже не знаю как без сарказма ответить... на такое. Базы нет. Отладчика нет. Документации нет. Населена роботами. Вызов метода toString() ничего не делает. Возвращает результат, который ты не используешь. Ни в какие логи он не пишет. Называть такой код адекватным и использовать во всех проектах, это какая-то запредельная самоуверенность. Честно говоря я считал, что глассфиш увидит возбуждаемую ошибку и ее обработает) Спасибо за то что наехал. Благодаря этому я вспомнил про наш внутренний журнал запись ексепшена в который я убрал из кода) Кароче я дитя и дурак( з.ы. Коль тебя напряг может скажешь, чего этот эксепшн вылазит -java.sql.SQLException: Numeric overflow in conversion of value 2205000000 to type INTEGER.(из журнала поднял) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 15:15 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
Nekto_Byчего этот эксепшн вылазит -java.sql.SQLException: Numeric overflow in conversion of value 2205000000 to type INTEGER.(из журнала поднял) В java int это 32 бита, а long- 64. Соответственно 9 и 19 десятичных цифр. Соответственно 2205000000 (10 цифр) лезет в long, но не лезет в int. А ты пихаешь. Можно заменить getInt() на getLong()- поможет до 20-значного числа :) Или сразу getBigInteger() - косо, криво, но приходится, но влезет всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 15:24 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
Nekto_Byjava.sql.SQLException: Numeric overflow in conversion of value 2205000000 to type INTEGER.(из журнала поднял) http://msdn.microsoft.com/en-us/library/ms187745.aspx Что написано то и значит - Numeric overflow. 2205000000 > 2^31-1 (2,147,483,647) эр-тэ-эф-эмчик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 15:29 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczNekto_Byjava.sql.SQLException: Numeric overflow in conversion of value 2205000000 to type INTEGER.(из журнала поднял) http://msdn.microsoft.com/en-us/library/ms187745.aspx Что написано то и значит - Numeric overflow. 2205000000 > 2^31-1 (2,147,483,647) эр-тэ-эф-эмчик авторNekto_By чего этот эксепшн вылазит -java.sql.SQLException: Numeric overflow in conversion of value 2205000000 to type INTEGER.(из журнала поднял) В java int это 32 бита, а long- 64. Соответственно 9 и 19 десятичных цифр. Соответственно 2205000000 (10 цифр) лезет в long, но не лезет в int. А ты пихаешь. Можно заменить getInt() на getLong()- поможет до 20-значного числа :) Или сразу getBigInteger() - косо, криво, но приходится, но влезет всё. Спасибо, извиняюсь за потраченное время и благодарю за то, что спустили с небес на землю(а то возомнил себя знатоком блин...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 15:37 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
On 11.06.2014 12:44, Nekto_By wrote: > пишем сервис ложим на сервер, пишем клиента и на локальной машине и > смотрим результат работы, выскочила проблема смотрим лог сервера, все в > логе хорошо - сидим гадаем( Скажем так: очень неэффективно. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 16:09 |
|
||
|
Почему Resultset обрезается?
|
|||
|---|---|---|---|
|
#18+
MasterZiv> пишем сервис ложим на сервер, пишем клиента и на локальной машине и > смотрим результат работы, выскочила проблема смотрим лог сервера, все в > логе хорошо - сидим гадаем( Скажем так: очень неэффективно. Когда хорошо платят- не так раскорячишься :D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2014, 17:41 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2127067]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
186ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
91ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 564ms |

| 0 / 0 |
