powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / BC4J adf ClobDomain и Oracle 8i
14 сообщений из 14, страница 1 из 1
BC4J adf ClobDomain и Oracle 8i
    #37706200
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день,Уважаемые форумчане.
Возникла потребность нашей КИС(Комплексной Информационной системе ,-Swing-Oracle ADF BC4J) соеденится с Oracle 8i
Кодировка базы cp1251
и вроде всё нормально,но как только читаем CLOB поле.в котором русские буквы ,он их не читает,а выводит крокозяблами.

1.При соединении с более высокими версиями Oracle без проблем.
2.Как только я этот CLOB преобоазую в Varchar2(java.lang.String) select dbms_lob.substr(MYCLOB,32767,1) clobstr ТОЖЕ всё русские буквы отлично видны на экране дисплея. :-)

Предположение,- CLOB именно от oracle 8i приходит в JDBC не в Unicode.(Ибо тот же JDBC с остальными версиями Oracle(10-11) с CLOB полями работает замечательно).

Я уже по разному пытался переводить в charset разные.
InputStreamReader=new InpuntStreamReader(clobdomain.getinputstream,Character.foname("cp1251"));
InpuntStreamReader(clobdomain.getinputstream,Charset.foname("UTF-8"));
Ну немеряно преобразований попробовал
всё никак.


Может кто-то знает как это вылечить.?
...
Рейтинг: 0 / 0
BC4J adf ClobDomain и Oracle 8i
    #37706214
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 15.03.2012 12:29, irbis_al wrote:

> Возникла потребность нашей КИС(Комплексной Информационной системе ,-Swing-Oracle ADF BC4J) соеденится с Oracle 8i
> Кодировка базы cp1251
> и вроде всё нормально,но как только читаем CLOB поле.в котором русские буквы ,он их не читает,а выводит крокозяблами.
>
> 1.При соединении с более высокими версиями Oracle без проблем.
> 2.Как только я этот CLOB преобоазую в Varchar2(java.lang.String) select dbms_lob.substr(MYCLOB,32767,1) clobstr ТОЖЕ всё
> русские буквы отлично видны на экране дисплея. :-)
>
> Предположение,- CLOB именно от oracle 8i приходит в JDBC не в Unicode.(Ибо тот же JDBC с остальными версиями
> Oracle(10-11) с CLOB полями работает замечательно).

Какой версии используется JDBC-драйвер?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
BC4J adf ClobDomain и Oracle 8i
    #37706261
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis Popov,

А вот саму версию JDBCне знаю(как узнать?)
Он поставляется вместе с oracle JDeveloper 10
(Например Jdeveloper 11 не работет с 8i говорит не поддерживается)

И ещё нельзя поменять просто JDBC драйвер (я пробовал уже вхять родной classes.zip от 8i)
Там завязка с adf bc4j он метаданные им передаёт(в установленном протоколе ...jdbc 8i его не знает) .

Просто пооменять на старый JDBC система не поднимается.
...
Рейтинг: 0 / 0
BC4J adf ClobDomain и Oracle 8i
    #37706276
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al,
апгрейд БД нельзя? Админа нет?
Уж сильно 8-ка отл-тся от 9 и выше.
...
Рейтинг: 0 / 0
BC4J adf ClobDomain и Oracle 8i
    #37706291
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Апгрейт проблематичен.
Там старые машины.
Начинали мы с Delphi
потом разработали crossplatform CIS
под 10-11
Новым клиентам уже машины и с памятью ставим и т.д.

А поддерживать старое надо?...клиенты просят новшества ,которые в НОвой КИС уже есть.
И обидно...оно почти работает за исключением момена CLOB
...
Рейтинг: 0 / 0
BC4J adf ClobDomain и Oracle 8i
    #37706306
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_alА вот саму версию JDBCне знаю(как узнать?)
Он поставляется вместе с oracle JDeveloper 10

Как-то так:
Код: java
1.
2.
3.
4.
5.
6.
Connection con;
...
DatabaseMetaData dbMetaData = con.getMetaData();
System.out.println("Database     : " + dbMetaData.getDatabaseProductVersion());
System.out.println("Driver       : " + dbMetaData.getDriverName() + " " + dbMetaData.getDriverVersion());
System.out.println("Driver path  : " + con.getClass().getProtectionDomain().getCodeSource().getLocation());


В проекте присутствуют такие архивы как nls_charset.jar или orai18n.jar?
...
Рейтинг: 0 / 0
BC4J adf ClobDomain и Oracle 8i
    #37706316
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да orai18n.jar
Есть.
Тут дело в "боке" 8i
я смотрю попойтно в массиве
когда приходит строка select dbms_lob.substr(clob)
и когда приходит clob после clob.tostring
Совсем разные вещи...мне не в Unicode приходит.
...
Рейтинг: 0 / 0
BC4J adf ClobDomain и Oracle 8i
    #37706320
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да orai18n.jar
Есть.
Тут дело в "боке" 8i
я смотрю ПОБАЙТНО в массиве
когда приходит строка select dbms_lob.substr(clob)
и когда приходит clob после clob.tostring
Совсем разные вещи в БАЙТАХ...мне не в Unicode приходит.
...
Рейтинг: 0 / 0
BC4J adf ClobDomain и Oracle 8i
    #37706354
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня уже как бы есть кривое решение,но оно кривое.
Поскольку строки хаваются на ура.
я создаю
в оракле 8i тип

create type clob8istring as table of varchar2(4000);

Создаю
FUNCTION GET8IJCLOB(clob) return clob8istring ;
Разбивает клоб на таблицу из строк по 4000

select GET8IJCLOB(clob) cast as table

в яве получаю таблицу ...соединяю строки получаю сито руссий CLOB ...но это же лажа...а не работа.
...
Рейтинг: 0 / 0
BC4J adf ClobDomain и Oracle 8i
    #37706367
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al,
создай вьюшку
...
Рейтинг: 0 / 0
BC4J adf ClobDomain и Oracle 8i
    #37706385
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Это первое что делали
не катит только 4000 символов получаю.
...
Рейтинг: 0 / 0
BC4J adf ClobDomain и Oracle 8i
    #37706427
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
off
у вас реально больше 4 штук?
imho
1. сверь параметры БД

"select * from nls_database_parameters
"
PARAMETER VALUE
1 NLS_LANGUAGE RUSSIAN
2 NLS_TERRITORY CIS
3 NLS_CURRENCY ?.
4 NLS_ISO_CURRENCY CIS
5 NLS_NUMERIC_CHARACTERS ,
6 NLS_CHARACTERSET CL8MSWIN1251
7 NLS_CALENDAR GREGORIAN
8 NLS_DATE_FORMAT DD.MM.RR
9 NLS_DATE_LANGUAGE RUSSIAN
10 NLS_SORT RUSSIAN
11 NLS_TIME_FORMAT HH24:MI:SSXFF
12 NLS_TIMESTAMP_FORMAT DD.MM.RR HH24:MI:SSXFF
13 NLS_TIME_TZ_FORMAT HH24:MI:SSXFF TZR
14 NLS_TIMESTAMP_TZ_FORMAT DD.MM.RR HH24:MI:SSXFF TZR
15 NLS_DUAL_CURRENCY ?.
16 NLS_COMP BINARY
17 NLS_LENGTH_SEMANTICS BYTE
18 NLS_NCHAR_CONV_EXCP FALSE
19 NLS_NCHAR_CHARACTERSET AL16UTF16
20 NLS_RDBMS_VERSION 10.2.0.3.0

2. запости на форум БД (если с дровами не выйдет)
3.
неуверен...
select * from NLS_Session_Parameters
сколько байт занимает varchar2

Удачи!
...
Рейтинг: 0 / 0
BC4J adf ClobDomain и Oracle 8i
    #37706574
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

NLS_CHARACTERSET CL8MSWIN1251
а вот NLS_LANGUAGE у Меня AMERICAN
вполне возможно ,что тут собака порылась

Кстати на работающих 10 и 11 Oracle
Тоже
NLS_CHARACTERSET CL8MSWIN1251
NLS_LANGUAGE AMERICAN

Видимо там главное NLS_CHARACTERSET

Но я же не могу поменять для действующей базы 8i NLS_LANGUAGE на RUSSIAN
могу только для сессии. или в переменной окружения
Но и так и так пока не работает.

Может кто-то знает как глобально сменить NLS_LANGUAGE (Хотя наверно это вопрос для ораклового форума)
...
Рейтинг: 0 / 0
BC4J adf ClobDomain и Oracle 8i
    #37706647
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al,
для того форума.
Давно было, там заморочки были вплоть до создания новой БД.
Так что лучше туда (чернил ведь не жалко).
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / BC4J adf ClobDomain и Oracle 8i
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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