Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Работа с Oracle 8.1.7.4.1 через jdbc


Автор: jedi 18.12.2008, 13:21
Здравствуйте, уважаемые.

Такая проблема...
Для работы с БД:
1. Регистрирую драйвер 
Код

"oracle.jdbc.driver.OracleDriver"

2. Создаю соединение с базой 
Код

DriverManager.getConnection("jdbc:oracle:thin:@192.168.10.100:1521:oracle", login, pass);

3. Создаю запрос 
Код

String request = new String("select * from CCR.ALL_KEYS, CCR.CLI_USERS WHERE CU_SERIAL = CLI_USER");

4. Получаю выборку 
Код

resultSet = statement.executeQuery(request);

5. Из полученной выборки нормально извлекаются объекты

Но, при попытке получить название таблицы 
Код

resultSet.getMetaData().getTableName(column);

всезда получаю пустую строку - ""

То же самое при попатке получить название схемы 
Код

resultSet.getMetaData().getSchemaName()

Пробывал и thin, и OCI - результат тот же самый.
Может кто-нибудь сталкивался с данной проблемой?

Я предполагаю, что проблема в драйвере "oracle.jdbc.driver.OracleDriver" (classes12.zip), что он просто не поддерживает данный функционал...
Так ли это? Если так, то чем можно заменить?

Автор: integral 18.12.2008, 16:30
"The oracle.jdbc.OracleResultSetMetaData interface is JDBC 2.0-compliant but does not implement the getSchemaName() and getTableName() methods because underlying protocol does not make this feasible." http://download.oracle.com/docs/cd/B10501_01/java.920/a96654/datacc.htm
т.е. действительно не поддерживает данный функционал как я понял

Автор: Resilient 24.12.2008, 11:52
Вероятно, что после получения ResultSet курсор находится перед первой строкой, и для чтения первой строки необходимо перевести курсор а первую строку:
Код

resultSet.next();

А потом уже что-то читать.

Автор: jedi 24.12.2008, 12:06
Движение курсора по ResultSet никак не связано с получением метаданных с помощью метода resultSet.getMetaData()
integral привел хорошую ссылку, в ней четко сказано, что методы getSchemaName() и getTableName() не реализованы.
Просто думаю может кто-нибудь сталкивался с подобной проблемой и нашел какой-то выход!?
Может есть есть другой драйвер, в котором реализованы данные методы? Или еще что?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)