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

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

26.09.2007, 23:34. Показов 3211. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru