powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Почему Resultset обрезается?
38 сообщений из 38, показаны все 2 страниц
Почему Resultset обрезается?
    #38667234
Nekto_By
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый, извиняюсь за то что отвлекаю(сам ненавижу когда люди не могут и ленятся сами разобраться в матчасти), но уже пол месяца не могу решить проблему.
При обращении к хранимой процедуре клиента получаю два 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, а драйвер к этой версии бд изъяли.

з.ы.
От безысходности создал вопросы на хешкоде и переполнениистека, может кого на мысль натолкнет.
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667260
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nekto_ByС первым все хорошо, но вот второй состоит из 20 строк, разработчики клиента утверждают что процедура возвращает около 1000.
Верить, в наше время, нельзя никому. Порой даже, самому себе. (с)
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667271
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код вынос мозга. На других сайтах почему-то не поленились код оформить.
while (true) ?

Два соврешенно разных сценария?
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
if (rowCounter > 0) { // This is update counter
procedure.getMoreResults();
continue;
}

if (rowCounter == 0) { // DDL command or 0 updates
procedure.getMoreResults();
continue;
}
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667275
Nekto_By
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не тот случай, как я уже отвечал на переполнении там скорее их сторона нуждается в работоспособности проекта чем наша)
Да и они то же знают о проблеме и пытаются найти решение вместе со мной(
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667277
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему драйвер "изъяли" тоже вопрос открытый
http://www.microsoft.com/en-us/download/details.aspx?id=1511
http://msdn.microsoft.com/en-US/data/ff928484

Но для 2000, JTDS, все же должен быть лучше. Много там всяких настроек полезных.
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667280
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nekto_ByНе тот случай, как я уже отвечал на переполнении там скорее их сторона нуждается в работоспособности проекта чем наша)
Да и они то же знают о проблеме и пытаются найти решение вместе со мной(
Пусть логи сервера посмотрят при выполнении запроса.
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667292
Nekto_By
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczКод вынос мозга. На других сайтах почему-то не поленились код оформить.
while (true) ?

Два соврешенно разных сценария?
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
if (rowCounter > 0) { // This is update counter
procedure.getMoreResults();
continue;
}

if (rowCounter == 0) { // DDL command or 0 updates
procedure.getMoreResults();
continue;
}


Код и там и тут тупо скопипастил из проекта так что хз чего он тут так вставился.
Это взял с официальной документации, насколько я понял необходимы что бы выйти на ResultSet, ибо помимо него возвращаются всякие указатели и счетчики(для чего они нужны я не знаю)
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667296
Nekto_By
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczПочему драйвер "изъяли" тоже вопрос открытый
http://www.microsoft.com/en-us/download/details.aspx?id=1511
http://msdn.microsoft.com/en-US/data/ff928484

Но для 2000, JTDS, все же должен быть лучше. Много там всяких настроек полезных.
А попробуйте скачать)))
Скачивается ридми, утверждающий что пора переходить на новую версию)
А логи ничего не пишут, типо все ок
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667301
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nekto_ByА попробуйте скачать)))
Скачивается ридми, утверждающий что пора переходить на новую версию)
А логи ничего не пишут, типо все ок
Ржака. :) MS в своём индусском стиле. Копирайтеры заняты, так они драйвер на readme подменили.
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667306
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nekto_ByКод и там и тут тупо скопипастил из проекта так что хз чего он тут так вставился.
Это взял с официальной документации, насколько я понял необходимы что бы выйти на ResultSet, ибо помимо него возвращаются всякие указатели и счетчики(для чего они нужны я не знаю)

То есть, вот так принципиально работать не будет? Не нужно кривой код оправдывать спецификациями.
Код: java
1.
2.
3.
4.
if (rowCounter => 0) {
   procedure.getMoreResults();
   continue;
}
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667307
Nekto_By
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczПочему драйвер "изъяли" тоже вопрос открытый
http://www.microsoft.com/en-us/download/details.aspx?id=1511
http://msdn.microsoft.com/en-US/data/ff928484

Но для 2000, JTDS, все же должен быть лучше. Много там всяких настроек полезных.
И кстати о настройках, я уже подумывал может в JTDS собака зарыта? Может ли он как бы порционно отдавать инфу и если да как это проверить, а затем исправить?
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667308
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
area это что за переменная?
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667312
Nekto_By
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczNekto_ByКод и там и тут тупо скопипастил из проекта так что хз чего он тут так вставился.
Это взял с официальной документации, насколько я понял необходимы что бы выйти на ResultSet, ибо помимо него возвращаются всякие указатели и счетчики(для чего они нужны я не знаю)

То есть, вот так принципиально работать не будет? Не нужно кривой код оправдывать спецификациями.
Код: java
1.
2.
3.
4.
if (rowCounter => 0) {
   procedure.getMoreResults();
   continue;
}


Ну тут да мой косяк, каюсь)
Хотя с другой стороны вдруг в перспективе понадобиться эти дополнительные фитчи из ответа по отдельности достовать, так что пускай так будет.
з.ы.
И да не стоит уходить от темы, есть ли идея где и как он обрезается?
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667319
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте в prepareCall задать другие параметры для курсора
http://jtds.sourceforge.net/resultSets.html
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667324
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nekto_ByИ да не стоит уходить от темы, есть ли идея где и как он обрезается?
Есть идея, что без отладки и логирования это всё гадание на кофейной гуще. Попробуйте хотя бы для JTDS настроить trace логирование и почитать почему именно прекращается чтение курсора.

catch блок адекватный?
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667326
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если у вас принципиально нет доступа к базе, как вы вообще тестируете?
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667330
Nekto_By
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Процедура возвращает 2 выборки первая содержит области(ложу в класс area), вторая содержит районы(ложу в класс region)
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667338
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nekto_ByПроцедура возвращает 2 выборки первая содержит области(ложу в класс area), вторая содержит районы(ложу в класс region)
На какой из моих вопросов это отвечает?
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667341
Nekto_By
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz catch блок адекватный?
Да адекватный, зарекомендовал себя в других проектах где большее количество выборок и больше данных в каждой из них
Blazkowicz А если у вас принципиально нет доступа к базе, как вы вообще тестируете?
пишем сервис ложим на сервер, пишем клиента и на локальной машине и смотрим результат работы, выскочила проблема смотрим лог сервера, все в логе хорошо - сидим гадаем(
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667345
Nekto_By
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczНа какой из моих вопросов это отвечает?
Blazkowiczarea это что за переменная?
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667363
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nekto_ByBlazkowiczНа какой из моих вопросов это отвечает?
пропущено...

ОК. Я думал вы программист, ожидал ответа программиста. А вам видать просто поболтать?
Давайте сделаем усилие и как программист программисту, расскажем про переменную area. Я не ваш бизнес аналитик, рассказывать где какая у вас предметная область мне не нужно.
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667423
Nekto_By
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczNekto_Byпропущено...

ОК. Я думал вы программист, ожидал ответа программиста. А вам видать просто поболтать?
Давайте сделаем усилие и как программист программисту, расскажем про переменную area. Я не ваш бизнес аналитик, рассказывать где какая у вас предметная область мне не нужно.
Так а что про неё говорить? Переменная содержит два поля, соответствующие полям возвращаемым в первом наборе, и гетеры сетеры для них
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667433
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nekto_ByТак а что про неё говорить? Переменная содержит два поля, соответствующие полям возвращаемым в первом наборе, и гетеры сетеры для них
Класс Area содержит поля и акцессоры. Переменная area это не класс. Это переменная она не может содержать полей. Это ваш код? Мне для вас его цитировать нужно?
Код: java
1.
area.add(temp);


Что такое area? List или Set?
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667471
Nekto_By
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczNekto_ByТак а что про неё говорить? Переменная содержит два поля, соответствующие полям возвращаемым в первом наборе, и гетеры сетеры для них
Класс Area содержит поля и акцессоры. Переменная area это не класс. Это переменная она не может содержать полей. Это ваш код? Мне для вас его цитировать нужно?
Код: java
1.
area.add(temp);


Что такое area? List или Set?
Извини не понял про какую часть кода ты говорил(думал про первый спойлер), area это поле - ArrayList<Area> area
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667481
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nekto_ByИзвини не понял про какую часть кода ты говорил(думал про первый спойлер), area это поле - ArrayList<Area> area
А откуда уверенность что проблема в ResultSet, а не где-то в чтени ArrayList и выводе этого списка?
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667484
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nekto_ByИзвини не понял про какую часть кода ты говорил(думал про первый спойлер)
Там нет переменной area ;)
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667519
Nekto_By
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczNekto_ByИзвини не понял про какую часть кода ты говорил(думал про первый спойлер)
Там нет переменной area ;)
Да, но есть метод areaDataHandler и я решил, что он тебя смутил.
Короче мне надо быть более внимательным)
BlazkowiczА откуда уверенность что проблема в ResultSet, а не где-то в чтени ArrayList и выводе этого списка?
Причин 2:
1. По такой же технологии в других проектах все норм.
2. Я отловил, что ResultSet возвращает только 20 строк(getRow()).
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667546
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nekto_By1. По такой же технологии в других проектах все норм.

Assumption is the mother of all fuck ups.

Nekto_ByЯ отловил, что ResultSet возвращает только 20 строк(getRow()).
getRow() в приведенном коде отсутсвует.

Резюмируем. Ничего криминального что бы привело к проблеме в указанном коде нет.
catch не приведен. Сделать вывод о том получает ли он исключение или все же next() возвращает false нельзя.
Достаточного для анализа логирования не ведется ни со стороны JTDS, ни со стороны SQL Server.
Исходника хранимой процедуры нет как и тестовой базы для того чтобы повторить проблему.
Тему можно не продолжать, пока не будет новой информации из логов, отладки или тестов.
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667556
Nekto_By
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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;
}
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667563
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nekto_ByBlazkowicz catch блок адекватный?
Да адекватный, зарекомендовал себя в других проектах где большее количество выборок и больше данных в каждой из них
Код: java
1.
2.
3.
catch(SQLException e){
  e.toString();
}




Blazkowicz упал от смеха со стула и больше из под стола не появлялся.
Удачной отладки!
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667685
Nekto_By
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczNekto_Byпропущено...

Да адекватный, зарекомендовал себя в других проектах где большее количество выборок и больше данных в каждой из них
Код: java
1.
2.
3.
catch(SQLException e){
  e.toString();
}




Blazkowicz упал от смеха со стула и больше из под стола не появлялся.
Удачной отладки!
Что смешного? Если ошибка и выпадет, то по идее должна в лог написать,понимаю что не стэкттрэйс,но что бы заметить ошибку достаточно.
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667709
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nekto_By Что смешного? Если ошибка и выпадет, то по идее должна в лог написать,понимаю что не стэкттрэйс,но что бы заметить ошибку достаточно.
Я даже не знаю как без сарказма ответить... на такое. Базы нет. Отладчика нет. Документации нет. Населена роботами.
Вызов метода toString() ничего не делает. Возвращает результат, который ты не используешь. Ни в какие логи он не пишет.
Называть такой код адекватным и использовать во всех проектах, это какая-то запредельная самоуверенность.
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667734
Nekto_By
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczNekto_By Что смешного? Если ошибка и выпадет, то по идее должна в лог написать,понимаю что не стэкттрэйс,но что бы заметить ошибку достаточно.
Я даже не знаю как без сарказма ответить... на такое. Базы нет. Отладчика нет. Документации нет. Населена роботами.
Вызов метода toString() ничего не делает. Возвращает результат, который ты не используешь. Ни в какие логи он не пишет.
Называть такой код адекватным и использовать во всех проектах, это какая-то запредельная самоуверенность.
Честно говоря я считал, что глассфиш увидит возбуждаемую ошибку и ее обработает)
Спасибо за то что наехал. Благодаря этому я вспомнил про наш внутренний журнал запись ексепшена в который я убрал из кода)
Кароче я дитя и дурак(
з.ы.
Коль тебя напряг может скажешь, чего этот эксепшн вылазит -java.sql.SQLException: Numeric overflow in conversion of value 2205000000 to type INTEGER.(из журнала поднял)
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667748
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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() - косо, криво, но приходится, но влезет всё.
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667755
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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)
эр-тэ-эф-эмчик
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667775
Nekto_By
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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() - косо, криво, но приходится, но влезет всё.

Спасибо, извиняюсь за потраченное время и благодарю за то, что спустили с небес на землю(а то возомнил себя знатоком блин...)
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667836
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 11.06.2014 12:44, Nekto_By wrote:

> пишем сервис ложим на сервер, пишем клиента и на локальной машине и
> смотрим результат работы, выскочила проблема смотрим лог сервера, все в
> логе хорошо - сидим гадаем(

Скажем так: очень неэффективно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Почему Resultset обрезается?
    #38667961
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv> пишем сервис ложим на сервер, пишем клиента и на локальной машине и
> смотрим результат работы, выскочила проблема смотрим лог сервера, все в
> логе хорошо - сидим гадаем(
Скажем так: очень неэффективно.


Когда хорошо платят- не так раскорячишься :D
...
Рейтинг: 0 / 0
38 сообщений из 38, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Почему Resultset обрезается?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]