powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Cast CallableStatement to OracleCallableStatement
14 сообщений из 14, страница 1 из 1
Cast CallableStatement to OracleCallableStatement
    #37226124
newTester
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробую сделать
Код: 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
Cast CallableStatement to OracleCallableStatement
    #37226142
eros2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы явно работаете внутри сервера приложений, там для этого есть метод unwrap().

Код: plaintext
1.
2.
3.
PreparedStatement stmt = con.prepareStatement( ... );
OraclePreparedStatement ops = stmt.unwrap( OraclePreparedStatement. class  );
ops.setStringAtName( "name", ... );
Пример для OraclePreparedStatement, но для OracleCallableStatement аналогично.
...
Рейтинг: 0 / 0
Cast CallableStatement to OracleCallableStatement
    #37226144
vie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Cast CallableStatement to OracleCallableStatement
    #37226167
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У вас соединение к базе настроено через GlassFish DataSource (connection pool). Поэтому для многих JDBC интерфейсов возвращаются реализации в виде классов glassfish. Можно погуглить на тему того как получить underlying класс: (ConnectionHolder40.unwrap())
Можно отказаться от GlassFish datasource в пользу аналогичного пула из Oracle JDBC
...
Рейтинг: 0 / 0
Cast CallableStatement to OracleCallableStatement
    #37226353
newTester
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Cast CallableStatement to OracleCallableStatement
    #37226364
newTester
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не совсем правильно выше написал
пробывал
Код: plaintext
1.
CallableStatement cs = connection1.prepareCall(sqlQuery);
OracleCallableStatement ocs  = cs.unwrap(OracleCallableStatement. class );
...
Рейтинг: 0 / 0
Cast CallableStatement to OracleCallableStatement
    #37226396
eros2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Cast CallableStatement to OracleCallableStatement
    #37226415
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Cast CallableStatement to OracleCallableStatement
    #37226730
newTester
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Cast CallableStatement to OracleCallableStatement
    #37226821
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Cast CallableStatement to OracleCallableStatement
    #37226981
newTester
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
0FD
Да, не работает, извиняюсь. А можешь драйвера(ojdbc6.jar) от 11g2 использовать, там есть поддержка java.sql.Wrapper?

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

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

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


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