powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Oracle, JDBC: Проблема чтения CRLF из LONG-а
3 сообщений из 3, страница 1 из 1
Oracle, JDBC: Проблема чтения CRLF из LONG-а
    #33440731
S.Isaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JDBC: Проблема чтения CRLF из LONG-а

Кратко:
Не могу прочитать из LONG-а ВКПС (CRLF) символы, читается только LF (10).

Системная инфа:
-клиент-
* JDBC driver type = THICK (OCI)
* JDBC driver version = 10.2.0.1.0
* JDK version = 1.4
* Platform = MS Windows Server 2000 Prof
-Сервер-
* DB Server = 9.2.0.7
* Platform = MS Windows Server 2003 EE

Развернуто:
Если в поле ЛОНГ (
Код: plaintext
create table POSTDATA_(ID_MESSAGE NUMBER not  null , MESSAGE  LONG  not  null 
) занести инфу запрсом вида
Код: plaintext
insert into postdata_(id_message,message) values ( 1 ,chr( 13 )||chr( 10 )||'1'||chr( 13 )||chr( 10 ))
, то данные читаются полностью (включая CRLF) как в Java так и в PL/SQL Developer-е

Если данные отредактировать PL/SQL Developer-ом (вставить «Enter» в конце данных в LONG-е), то данные буду читать полностью только в PL/SQL Developer-е. Если прочитать из Java, то приедут только LF символы (не одного CR символа - chr(13) ).

Кусок Java кода :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
   private   static  String getLong(Connection conn){
    PreparedStatement ps= null ;
    ResultSet r= null ;
     try  {
      ps = conn.prepareStatement(
          "select message from postdata_ where id_message=1");
      r = ps.executeQuery();
       if  (r.next()) {
          return  r.getString( 1 );
      }
       else  {    return  "";   }
    }
     catch (Exception ex){
          System.out.println(ex.getMessage());
    }
     finally {
       try  {               r.close();             }
       catch (Exception ex){               System.out.println(ex.getMessage());             };
       try  {               ps.close();             }
       catch (Exception ex){               System.out.println(ex.getMessage());             };
    };
     return  "";
  }

Пробовал как Thin, так OCI драйвера.

Написал запрос на metalink 4966383.992 . Там говорят – ничего не понимаем – давай выйдем тебе на комп и посмотрим (у меня пока не выходит – что то с авторизацией)

Кто нибудь сталкивался? Есть варианты?
...
Рейтинг: 0 / 0
Oracle, JDBC: Проблема чтения CRLF из LONG-а
    #33440865
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
S.Isaev
Если данные отредактировать PL/SQL Developer-ом (вставить «Enter» в конце данных в LONG-е), то данные буду читать полностью только в PL/SQL Developer-е. Если прочитать из Java, то приедут только LF символы (не одного CR символа - chr(13) )

ИМХО это проблемы собственно PL/SQL Developer'а, а не Oracle, раз он так интерпретирует пользовательский ввод. Кстати, SQLNavigator 5.0 вставляет CRLF. Опять же, несколько аспектов:

- для Windows правильным считается CRLF.
- для *nix - LF (что произойдет, если данные в базе будет менять приложение на *nix?).
- Oracle в своем хранимом коде (процедуры, триггера и т.д) в качестве разделителя строк использует только LF независимо от платформы, т.е. и на Windows тоже.
...
Рейтинг: 0 / 0
Oracle, JDBC: Проблема чтения CRLF из LONG-а
    #33441099
S.Isaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понял в чем дело.
Разослал ссылку своим знакомым и тут решил сам подумать :)

Нашел у Том Кайта вопрос Trimming special Characters и решил попробовать функцию dump - она и расставила все точки на i.

Добавил поле varchar2, так как dump не работает от LONG-а, и провел на нем эксперимент.
Код: plaintext
select dump(message_v) from POSTDATA_

Функция выдает ответ вида:
Код: plaintext
Typ=1 Len=5: 13,10,49,13,10

Оказалось, что PL/SQL Developer и компоненты DOA при вставке в ЛОНГ и в VARCHAR2 (и видимо во все текстовые поля) убирают при вставке лишние, по их мнению, символы CR (chr(13)) из пары CRLF, и добавляют их при чтении символа LF (chr(10)).

Всем спасибо! :)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Oracle, JDBC: Проблема чтения CRLF из LONG-а
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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