Форум программистов, компьютерный форум, киберфорум
Java: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 06.09.2007
Сообщений: 5

JDBC: как сделать scrollable ResultSet? - ругается, не дается

26.09.2007, 23:34. Показов 3208. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Hi All!
Вводная:
Connection к Oracle, ч/з JDBC-ODBC мост.
хочу поиметь scrollable ResultSet с запроса

strSQL = 'SELECT w.TWork, p.TParam, p.Value FROM Test_Work w, Test_Param p WHERE (w.ID_Test_Point = 2) AND (p.ID_Test_Work = w.ID_Test_Work)'

делаю
...
Statement stmt = con.createStatement(ResultSet.TYPE_SCROL L_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs = stmt.executeQuery(strSQL);
...

и эта бяка при выполнении дает:

java.sql.SQLException: [Microsoft][ODBC driver for Oracle]Cannot use Keyset-driven cursor on join, with distinct clause, union, intersect or minus or on read only result set;

CONCUR_UPDATABLE в createStatement, and/or con.setReadOnly(false) - не помогает.

Я понимаю, что я чего-то не понимаю, но все же:

Вопрос: можно ли поиметь scrollable ResultSet с такого запроса, и если да, то как?

Oracle JDBC driver не предлагать. Но если очень хочется - предлагать, но ласково

P.S. кстати, если кто знает, какое соотношение по скорости у Oracle JDBC (OCI | Thin) driver и моста JDBC-[ODBC driver for Oracle]?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.09.2007, 23:34
Ответы с готовыми решениями:

JDBC: ResultSet
Немного запутался в JDBC. После создания Statement и вызова executeQuery мы получаем ResultSet. Чем он является? Содержит ли он в себе все...

MS SQL driver type 4 ошибка: [Microsoft][SQLServer JDBC Driver]No ResultSet set was produced.
Всем привет! Может мне кто-нибудь помочь с моей проблемой связанной с MS SQL driver type 4? Я использую для разработки проекта следующее:...

Сделать TextArea scrollable с низу вверх
По умолчанию TextArea при выходе записуемого в неё текста становится scrollable слева направо. Как сделать так, что бы она становилась...

7
mishgun
27.09.2007, 01:15
скорость у pure jdbc-driver выше чем у jdbc-odbc моста.И вообще весь навороченный мир предлагает использовать вендоровские драйвера а мост только когда работаешь с Акссесом.И потом что ты имеешь ввиду под scrollable ResultSet?Тебе что надо что бы он срускался по рядам?
Тогда пиши так
Java
1
2
3
4
resultSet result = statement.executeQuery(sql);
while(result.next()){
 String s  = result.getString('Login');
}
с помошью метода next ты можешь переходить на следующий ряд.(Это если я правильно понял проблему)
0 / 0 / 0
Регистрация: 06.09.2007
Сообщений: 5
27.09.2007, 12:25  [ТС]
>И потом что ты имеешь ввиду под scrollable ResultSet? Тебе что надо что бы он спускался по рядам?

Хе, нет, конечно. Нужно, что бы он _еще_и_поднимался_.
Т.е. чтобы проскролировав ResultSet до конца можно было сказать ему например .beforeFirst(), не опасаясь, что он пошлет тебя на yandex.

A default ResultSet object is not updatable and has a cursor that moves forward only.
Это когда делаешь просто

Java
1
2
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(strSQL);
а когда деешь как наприсано в первой мессаге, он должен быть скролябле, апдабле, и пофигабле на изменения (insensitive to updates by others).
Вот.

На счет драйверов: - только что удалось
завести Oracle JDBC Thin драйвер, проверю, нет ли у него этих граблей + протестирую, кто быстрее.
0
AiK
28.09.2007, 01:06
А чем не устраивает многоуважаемого дона вариант выгребания резалтсета в вектор и перемещения по последнему?
0 / 0 / 0
Регистрация: 06.09.2007
Сообщений: 5
29.09.2007, 10:40  [ТС]
a. скоростью
b. несоответствием условию задачи.

Мы тут в детство вдарились - этими самыми мереямся ... скоростями.. Надо, насколько это возможно, написать код, идентичный тестовому ASP'шному, и оценить скорость выполнения..
Кроме того, раз сущетвует возможность делать скролябле-ResultSetы, почему бы не научиться их делать?..

дон Румата - дону AiK
0
AiK
29.09.2007, 14:52
В таком случае надо читать документацию к драйверу.
В случае с JdbcOdbc мостиком - доку к ODBC дайверу. 90 к 10, что он не поддерживает скроллабле резалтсеты.

Да, открой тайну золотого ключика - зачем понадобилось возвращатся?
0 / 0 / 0
Регистрация: 06.09.2007
Сообщений: 5
29.09.2007, 16:16  [ТС]
Иванова не дура?.. Ну извините.. В смысле, [Microsoft][ODBC driver for Oracle] не поддерживает?? 8 [ ]

Про тайну золотого ключика -

Вопрос скорее должен звучать так: 'зачем это понадобилось тому, кто писал ASP-шный пример?'.

А в примере производиться хитрый расчет. Считается в два прохода. В первый проход считаеются некоторые суммарные показатели, которые используются при расчете других показателей во втором прогоне. Причем в одной итерации (в обоих проходах), в зависимости от значений параметров (из того же резалтсета), могут использоваться разные функции. В общем случае пытаться что-нить приводить к виду, в котором все считается за один проход - себе дороже (ему дороже, мне надо только тупо сделать то же, но на JSP ). А если добавить необходимость апдэйтить табличку результатами, получаемыми во время второго прохода, то, по-моему, без второго прохода вообще не обойтись.. (- последнее немного путанно, но, я думаю, понятно, что имел ввиду).
Вот.
0
AiK
29.09.2007, 17:40
Я не знаю, причём тут Иванова (мне Петрова больше нравится ), но вот что об этом пишут в MSDN:

When you try to use table aliases in SELECT statements with the Microsoft Oracle ODBC driver and you are using the Keyset cursor type, you receive the following error:

[Microsoft][ODBC driver for Oracle]Cannot use Keyset-driven cursor on join, with union, intersect or minus or on read only result set'


CAUSE
When the driver re-writes the SQL statement to send to the Oracle server it doesn't create the correct syntax.

Internally, Oracle returns the following error message:

ORA-00964: table name not in FROM list
In turn, The Microsoft Oracle ODBC driver maps that error message to the message listed in the SYMPTOMS section of this article.


RESOLUTION
The solution depends on the nature of the application. If the application needs to use Keyset cursors, it may not use table aliases. If the application must use table aliases, the cursor type must be changed to FORWARD-ONLY or STATIC.

Читать доки надо (хоть изредка)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.09.2007, 17:40
Помогаю со студенческими работами здесь

IceSqueez ругается с JDBC
Доброго времени суток. Сегодня пришлось сделать авторизацию через сервер моей программы. Ну я сел писать код, взял для примера код из темы...

Jdbc и SQlite. Как лучше сделать?
При каждом взаимодействии с бд (записать/обновить/удалить и тд) мы создаем подключение: Statement statement=co.createStatement()...

Как сделать подключение драйвера jdbc в netbeans?
Как сделать подключение драйвера jdbc в netbeans?

Как сделать inner join в JDBC при работе с MySQL ?
Подскажите, какой обьект мне использовать для обработки запроса, содержащего в тексте связывание нескольких таблиц по полям через inner...

Java + Access bez JDBC-ODBC a srazu 4erez JDBC
Pishu na java.Isplzuju Access.Svazivaju 4erez ODBC-JDBC.A moznlo li na pjramuju svzat 4erez jdbc bez mosta ODBC-JDBC.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru