Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Cast CallableStatement to OracleCallableStatement / 14 сообщений из 14, страница 1 из 1
21.04.2011, 10:58:54
    #37226124
newTester
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cast CallableStatement to OracleCallableStatement
Пробую сделать
Код: plaintext
OracleCallableStatement ocs = (OracleCallableStatement) connection1.prepareCall(sqlQuery);
получаю
java.lang.ClassCastException: com.sun.gjc.spi.jdbc40.CallableStatementWrapper40 cannot be cast to oracle.jdbc.OracleCallableStatement

Есть ли возможность как это сделать?
...
Рейтинг: 0 / 0
21.04.2011, 11:07:45
    #37226142
eros2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cast CallableStatement to OracleCallableStatement
Вы явно работаете внутри сервера приложений, там для этого есть метод unwrap().

Код: plaintext
1.
2.
3.
PreparedStatement stmt = con.prepareStatement( ... );
OraclePreparedStatement ops = stmt.unwrap( OraclePreparedStatement. class  );
ops.setStringAtName( "name", ... );
Пример для OraclePreparedStatement, но для OracleCallableStatement аналогично.
...
Рейтинг: 0 / 0
21.04.2011, 11:09:05
    #37226144
vie
vie
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cast CallableStatement to OracleCallableStatement
newTesterПробую сделать
Код: plaintext
OracleCallableStatement ocs = (OracleCallableStatement) connection1.prepareCall(sqlQuery);
получаю
java.lang.ClassCastException: com.sun.gjc.spi.jdbc40.CallableStatementWrapper40 cannot be cast to oracle.jdbc.OracleCallableStatement

Есть ли возможность как это сделать?

какого класса обьект connection1?
...
Рейтинг: 0 / 0
21.04.2011, 11:15:43
    #37226167
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cast CallableStatement to OracleCallableStatement
У вас соединение к базе настроено через GlassFish DataSource (connection pool). Поэтому для многих JDBC интерфейсов возвращаются реализации в виде классов glassfish. Можно погуглить на тему того как получить underlying класс: (ConnectionHolder40.unwrap())
Можно отказаться от GlassFish datasource в пользу аналогичного пула из Oracle JDBC
...
Рейтинг: 0 / 0
21.04.2011, 12:18:27
    #37226353
newTester
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cast CallableStatement to OracleCallableStatement
eros2Вы явно работаете внутри сервера приложений, там для этого есть метод unwrap().

Код: plaintext
1.
2.
3.
PreparedStatement stmt = con.prepareStatement( ... );
OraclePreparedStatement ops = stmt.unwrap( OraclePreparedStatement. class  );
ops.setStringAtName( "name", ... );
Пример для OraclePreparedStatement, но для OracleCallableStatement аналогично.

попробывал
Код: plaintext
1.
2.
CallableStatement cs = connection1.prepareCall(sqlQuery);
OracleCallableStatement ocs  = cstwo.unwrap(OracleCallableStatement. class );
получаю
java.lang.AbstractMethodError: oracle.jdbc.driver.T4CCallableStatement.unwrap(Ljava/lang/Class;)Ljava/lang/Object; at com.sun.gjc.spi.jdbc40.CallableStatementWrapper40.unwrap(CallableStatementWrapper40.java:1388)


vieкакого класса обьект connection1?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
       Connection connection1 =  null ;
        try  {
           Context ctx =  new  InitialContext();
           DataSource ds = (DataSource) ctx.lookup("jdbc/OraclePool");
           cn = ds.getConnection();
       }  catch  (SQLException ex) {
           ex.printStackTrace();
       }  catch  (NamingException ex) {
           ex.printStackTrace();
       }



BlazkowiczУ вас соединение к базе настроено через GlassFish DataSource (connection pool). Поэтому для многих JDBC интерфейсов возвращаются реализации в виде классов glassfish. Можно погуглить на тему того как получить underlying класс: (ConnectionHolder40.unwrap())
Можно отказаться от GlassFish datasource в пользу аналогичного пула из Oracle JDBC

Спасибо начал гуглить, но там как-то непросто для меня все.
По поводу пула из Oracle JDBC слышу первый раз, можете что-нибудь сказать про их +/- в сравнении GlassFish datasource ?
...
Рейтинг: 0 / 0
21.04.2011, 12:20:51
    #37226364
newTester
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cast CallableStatement to OracleCallableStatement
Не совсем правильно выше написал
пробывал
Код: plaintext
1.
CallableStatement cs = connection1.prepareCall(sqlQuery);
OracleCallableStatement ocs  = cs.unwrap(OracleCallableStatement. class );
...
Рейтинг: 0 / 0
21.04.2011, 12:32:09
    #37226396
eros2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cast CallableStatement to OracleCallableStatement
newTesterполучаю
java.lang.AbstractMethodError: oracle.jdbc.driver.T4CCallableStatement.unwrap(Ljava/lang/Class;)Ljava/lang/Object; at com.sun.gjc.spi.jdbc40.CallableStatementWrapper40.unwrap(CallableStatementWrapper40.java:1388)
Плохо. В JBoss-е такое проходит. Хотя вообще ошибка заставляет задуматься.

Давайте зайдём с другой стороны.
Зачем вам нужен OracleCallableStatement? Может сделать то, что вам нужно можно и без него?
...
Рейтинг: 0 / 0
21.04.2011, 12:40:37
    #37226415
0FD
0FD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cast CallableStatement to OracleCallableStatement
eros2newTesterполучаю
java.lang.AbstractMethodError: oracle.jdbc.driver.T4CCallableStatement.unwrap(Ljava/lang/Class;)Ljava/lang/Object; at com.sun.gjc.spi.jdbc40.CallableStatementWrapper40.unwrap(CallableStatementWrapper40.java:1388)
Плохо. В JBoss-е такое проходит. Хотя вообще ошибка заставляет задуматься.

Давайте зайдём с другой стороны.
Зачем вам нужен OracleCallableStatement? Может сделать то, что вам нужно можно и без него?

Oracle не поддерживает java.sql.Wrapper. Какой OracleCallableStatement используется? oracle.jdbc.OracleCallableStatement это интерфейс и
Код: plaintext
oracle.jdbc.OracleCallableStatement ocs  = cs.unwrap(oracle.jdbc.OracleCallableStatement. class );
должно работать
...
Рейтинг: 0 / 0
21.04.2011, 14:28:50
    #37226730
newTester
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cast CallableStatement to OracleCallableStatement
0FDOracle не поддерживает java.sql.Wrapper. Какой OracleCallableStatement используется?

честно говоря не знаю какой, в импортах такое: import oracle.jdbc.OracleCallableStatement;

0FDoracle.jdbc.OracleCallableStatement это интерфейс и
Код: plaintext
oracle.jdbc.OracleCallableStatement ocs  = cs.unwrap(oracle.jdbc.OracleCallableStatement. class );
должно работать

Код: plaintext
1.
2.
3.
        String sql = "...";
        CallableStatement cs = connection1.prepareCall(sql);
        OracleCallableStatement ocs = cs.unwrap(oracle.jdbc.OracleCallableStatement. class );
получаю
java.lang.AbstractMethodError: oracle.jdbc.driver.T4CCallableStatement.unwrap(Ljava/lang/Class;)Ljava/lang/Object; at com.sun.gjc.spi.jdbc40.CallableStatementWrapper40.unwrap(CallableStatementWrapper40.java:1388)
...
Рейтинг: 0 / 0
21.04.2011, 14:51:41
    #37226821
0FD
0FD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cast CallableStatement to OracleCallableStatement
newTester0FDOracle не поддерживает java.sql.Wrapper. Какой OracleCallableStatement используется?

честно говоря не знаю какой, в импортах такое: import oracle.jdbc.OracleCallableStatement;

0FDoracle.jdbc.OracleCallableStatement это интерфейс и
Код: plaintext
oracle.jdbc.OracleCallableStatement ocs  = cs.unwrap(oracle.jdbc.OracleCallableStatement. class );
должно работать

Код: plaintext
1.
2.
3.
        String sql = "...";
        CallableStatement cs = connection1.prepareCall(sql);
        OracleCallableStatement ocs = cs.unwrap(oracle.jdbc.OracleCallableStatement. class );
получаю
java.lang.AbstractMethodError: oracle.jdbc.driver.T4CCallableStatement.unwrap(Ljava/lang/Class;)Ljava/lang/Object; at com.sun.gjc.spi.jdbc40.CallableStatementWrapper40.unwrap(CallableStatementWrapper40.java:1388)

Да, не работает, извиняюсь. А можешь драйвера(ojdbc6.jar) от 11g2 использовать, там есть поддержка java.sql.Wrapper?
...
Рейтинг: 0 / 0
21.04.2011, 15:58:30
    #37226981
newTester
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cast CallableStatement to OracleCallableStatement
0FD
Да, не работает, извиняюсь. А можешь драйвера(ojdbc6.jar) от 11g2 использовать, там есть поддержка java.sql.Wrapper?

Я как раз сейчас ищу ojdbc6.jar только пытаюсь найти от 10g, у меня 10g стоит
...
Рейтинг: 0 / 0
21.04.2011, 16:10:09
    #37227010
0FD
0FD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cast CallableStatement to OracleCallableStatement
newTester,

Не найдешь, ojdbc6.jar это в 11g, используй драйвера 11g.
...
Рейтинг: 0 / 0
21.04.2011, 16:21:56
    #37227052
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cast CallableStatement to OracleCallableStatement
newTesterЯ как раз сейчас ищу ojdbc6.jar только пытаюсь найти от 10g, у меня 10g стоитОтдельно можно взять со странички Instance Client.
"Но есть ньюанс" - (SQL-)код, который работает с "родным" ojdbc14.jar может "не прокатить" с ojdbc6.jar.
...
Рейтинг: 0 / 0
25.01.2012, 18:59:26
    #37631533
Thin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cast CallableStatement to OracleCallableStatement
Столкнулся с той же проблемой!
Применил ваши советы. Всё заработало. Этот шаблон:

Код: java
1.
2.
CallableStatement cs = connection.prepareCall(sql);
OracleCallableStatement ocs = cs.unwrap(oracle.jdbc.OracleCallableStatement.class);



Пробовал, правда, уже после того как запихнул "ojdbc6.jar" в "\glassfish-3.1.1\glassfish\domains\domain1\lib\ext\"
, возможно работает и без этого...

Спасибо за ваши советы !!!
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Cast CallableStatement to OracleCallableStatement / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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