Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / вопрос по именованным параметрам в JdbcRowSet / 9 сообщений из 9, страница 1 из 1
26.01.2017, 10:33
    #39391835
Мурзик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по именованным параметрам в JdbcRowSet
Добрый день, уважаемые коллеги.

Скажите пожалуйста, можно ли обращаться к именованным параметрам в JdbcRowSet по имени, а не по номеру позиции?

Работаю с Oracle 12c.1.0.2.0, драйвер ojdbc7.jar этой же версии, jdk 1.8.40.

Фрагмент кода:
Код: plaintext
1.
2.
3.
4.
5.
6.
            myFactory = RowSetProvider.newFactory();
            rsOra = myFactory.createJdbcRowSet();
            rsOra.setUrl(***);
            rsOra.setUsername("userName");
            rsOra.setPassword("passWord");
            rsOra.setCommand("select employee_id, first_name, salary, hire_date from employees where employee_id>:id");
вот так -
Код: plaintext
rsOra.setLong("id", 120);
не работает

а вот так -
Код: plaintext
rsOra.setLong(1, 120);
работает.

Файл с текстом метода во вложении.

Заранее спасибо.
...
Рейтинг: 0 / 0
26.01.2017, 10:34
    #39391840
Мурзик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по именованным параметрам в JdbcRowSet
Вдогонку -
Exception кидает вот такой:
java.sql.SQLFeatureNotSupportedException: Feature not supported
at com.sun.rowset.JdbcRowSetImpl.setLong(JdbcRowSetImpl.java:6847)
...
Рейтинг: 0 / 0
26.01.2017, 11:06
    #39391876
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по именованным параметрам в JdbcRowSet
МурзикВдогонку -
Exception кидает вот такой:
java.sql.SQLFeatureNotSupportedException: Feature not supported
at com.sun.rowset.JdbcRowSetImpl.setLong(JdbcRowSetImpl.java:6847)

Ругается потому, что не поддерживается setLong!
Используйте java.sql.PreparedStatement.
...
Рейтинг: 0 / 0
26.01.2017, 14:56
    #39392122
Мурзик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по именованным параметрам в JdbcRowSet
SQL2008МурзикВдогонку -
Exception кидает вот такой:
java.sql.SQLFeatureNotSupportedException: Feature not supported
at com.sun.rowset.JdbcRowSetImpl.setLong(JdbcRowSetImpl.java:6847)

Ругается потому, что не поддерживается setLong!
Используйте java.sql.PreparedStatement.

Он поддерживает, но как-то частично (только позиционное указание параметров) - в коде выше показано.

А вот OraclePreparedStatement поддерживает и именованные параметры (метод авторsetLongAtName):

автор try(OracleConnection oraConn = (OracleConnection) ods.getConnection()) {
OraclePreparedStatement psOra = (OraclePreparedStatement) oraConn.prepareStatement(strSql);

psOra.setLongAtName("id", 120);
OracleResultSet rsOra = (OracleResultSet) psOra.executeQuery();

Вот кто бы еще подсказал, как этот авторOracleResultSet принудить fetchИть вперед-назад по всей выборке.

У меня на
Код: plaintext
 rsOra.afterLast();
ругался так:
java.sql.SQLException: Invalid operation for forward only resultset : afterLast

Я примерно понимаю, что ему не нравится, но как его вывести из этого режима (
Код: plaintext
forward only
) ?

Заранее всем спасибо.
...
Рейтинг: 0 / 0
26.01.2017, 15:01
    #39392125
am_sasa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по именованным параметрам в JdbcRowSet
Мурзик,

а если так
Код: java
1.
OraclePreparedStatement psOra = (OraclePreparedStatement) oraConn.prepareStatement(strSql,ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
...
Рейтинг: 0 / 0
26.01.2017, 15:19
    #39392153
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по именованным параметрам в JdbcRowSet
Мурзикjava.sql.SQLException: Invalid operation for forward only resultset : afterLast

Я примерно понимаю, что ему не нравится, но как его вывести из этого режима (
Код: plaintext
forward only
) ?

Заранее всем спасибо.

Есть несколько режимов.
Выбирайте какой нравится.
...
Рейтинг: 0 / 0
26.01.2017, 15:20
    #39392156
Мурзик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по именованным параметрам в JdbcRowSet
am_sasaМурзик,

а если так
Код: java
1.
OraclePreparedStatement psOra = (OraclePreparedStatement) oraConn.prepareStatement(strSql,ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);



спасибо большое.
Вот еще бы понять, как вытащить из Oracle данные колонки с типом timestamp with timezone ("как есть", т.е. с данными по таймЗоне).
мне удалось только так -

TIMESTAMPTZ.toString(oraConn,rsOra.getTIMESTAMPTZ("sm").toBytes())

Проблема в том, что эту строку потом надо парсить, а в ней может быть и таймРегион (Europe/Moscow) и оффсет (+3:00), что приводит к жуткому кодоНаписанию (код есть, могу выложить).

Запрос для примера такой:
select :id f_id, employee_id, first_name, salary, hire_date, systimestamp sm from employees where employee_id>:id
...
Рейтинг: 0 / 0
26.01.2017, 16:45
    #39392291
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по именованным параметрам в JdbcRowSet
МурзикПроблема в том, что эту строку потом надо парсить
поэтому не выводи поле как есть. Измени его в запросе, округли, или сделай 3 колоки вместо одной для вывода в клиент.
...
Рейтинг: 0 / 0
27.01.2017, 10:14
    #39392751
Мурзик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по именованным параметрам в JdbcRowSet
Petro123, добрый день.
Если бы можно было изменить запрос....
Данные прилетают их процедуры заврапленного пакета.
Попутный вопрос - когда будут драйвера oracle поддерживать jdbc 4.2?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / вопрос по именованным параметрам в JdbcRowSet / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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