powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Преобразование из blob в clob
9 сообщений из 9, страница 1 из 1
Преобразование из blob в clob
    #37794692
Ura!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу написать на яве функцию преобразования из blob в clob. Не могу понять почему вощникает ошибка
пишет nulljava.lang.NullPointerException
Где он там нашёл нулевой указатель хоть убей не пойму.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
private static Connection getConnection()
    throws SQLException {
    return DriverManager.getConnection("jdbc:default:connection:");
   }
   
   public static CLOB blob2clob(BLOB blob)
   throws IOException, SQLException
   {
      CLOB my_clob = null;
      Connection con = null;
      Writer  writer = null;
      String vEncoding = "UTF-8";
      Reader reader = null;
      try
      { 
        con = getConnection();
        my_clob = CLOB.createTemporary(con, true, CLOB.DURATION_SESSION);
        reader = new InputStreamReader(blob.getBinaryStream(), vEncoding));
        writer = my_clob.getCharacterOutputStream()) ;
        char[] chars = new char[my_clob.getChunkSize()];
        int iChar;
        while ((iChar = reader.read(chars,0,my_clob.getChunkSize())) != -1) { // Вот здесь ошибка, так как в цикл оно уже не входит
          String t_str = new String(chars);
          SaveLog(0, iChar + " " + t_str,20);
          writer.write(chars, 0, iChar);
        }
        writer.flush();
        writer.close();
      } 
      finally {
        if (reader != null) {writer.close();}
        if (writer != null) {writer.close();}
        if (con != null) {con.close();}
      } 
      return my_clob;
  }
...
Рейтинг: 0 / 0
Преобразование из blob в clob
    #37794803
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда исключение ловите. Делайте ему printStackTrace() и выкладывайте сюда.
...
Рейтинг: 0 / 0
Преобразование из blob в clob
    #37794804
J.Serge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ura!Хочу написать на яве функцию преобразования из blob в clob. Не могу понять почему вощникает ошибка
пишет nulljava.lang.NullPointerException
Где он там нашёл нулевой указатель хоть убей не пойму.


Ну ты посмотри stacktrace-то
...
Рейтинг: 0 / 0
Преобразование из blob в clob
    #37795033
Ura!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм, а где я его увижу? Это же всё под ораклом пишется - сохранённый в БД класс. Где у него там standard error stream - х.з.
...
Рейтинг: 0 / 0
Преобразование из blob в clob
    #37795263
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ura!Хм, а где я его увижу? Это же всё под ораклом пишется - сохранённый в БД класс. Где у него там standard error stream - х.з.
на ЯП самого БД будет проще и быстрее работать. Снаружи Java только дернешь процедуру.
...
Рейтинг: 0 / 0
Преобразование из blob в clob
    #37795372
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
типа такого
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
  PROCEDURE put_local_binary_data(p_data IN BLOB,
                                  p_dir  IN VARCHAR2,
                                  p_file IN VARCHAR2) IS
    -- --------------------------------------------------------------------------
    l_out_file UTL_FILE.file_type;
    l_buffer   RAW(32767);
    l_amount   BINARY_INTEGER := 32767;
    l_pos      INTEGER := 1;
    l_blob_len INTEGER;
  BEGIN
    l_blob_len := DBMS_LOB.getlength(p_data);

    l_out_file := UTL_FILE.fopen(p_dir, p_file, 'wb', 32767);

    WHILE l_pos <= l_blob_len LOOP
      DBMS_LOB.read(p_data, l_amount, l_pos, l_buffer);
      UTL_FILE.put_raw(l_out_file, l_buffer, TRUE);
      UTL_FILE.fflush(l_out_file);
      l_pos := l_pos + l_amount;
    END LOOP;

    UTL_FILE.fclose(l_out_file);
  EXCEPTION
    WHEN OTHERS THEN
      IF UTL_FILE.is_open(l_out_file) THEN
        UTL_FILE.fclose(l_out_file);
      END IF;
      RAISE;
  END;
...
Рейтинг: 0 / 0
Преобразование из blob в clob
    #37795386
Ura!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Видимо придётся всё-таки на PL/SQL писать.
...
Рейтинг: 0 / 0
Преобразование из blob в clob
    #37795509
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 15.05.2012 14:56, Ura! wrote:

> Хм, а где я его увижу? Это же всё под ораклом пишется - сохранённый в БД класс. Где у него там standard error stream - х.з.

Есть перенаправление вывода: dbms_java.set_output()

http://docs.oracle.com/cd/E11882_01/java.112/e10588/appendixa.htm#JJDEV13432
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Преобразование из blob в clob
    #37795680
Тупой Пух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ura!,

Нефиг велосипеды изобретать:

Syntax
DBMS_LOB.CONVERTTOCLOB(
dest_lob IN OUT NOCOPY CLOB CHARACTER SET ANY_CS,
src_blob IN BLOB,
amount IN INTEGER,
dest_offset IN OUT INTEGER,
src_offset IN OUT INTEGER,
blob_csid IN NUMBER,
lang_context IN OUT INTEGER,
warning OUT INTEGER);

This procedure takes a source BLOB instance, converts the binary data in the source instance to character data using the character set you specify, writes the character data to a destination CLOB or NCLOB instance, and returns the new offsets. You can use this interface with any combination of persistent or temporary LOB instances as the source or destination.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Преобразование из blob в clob
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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