Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Преобразование из blob в clob / 9 сообщений из 9, страница 1 из 1
15.05.2012, 12:28:42
    #37794692
Ura!
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование из blob в clob
Хочу написать на яве функцию преобразования из 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
15.05.2012, 12:53:31
    #37794803
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование из blob в clob
Когда исключение ловите. Делайте ему printStackTrace() и выкладывайте сюда.
...
Рейтинг: 0 / 0
15.05.2012, 12:53:39
    #37794804
J.Serge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование из blob в clob
Ura!Хочу написать на яве функцию преобразования из blob в clob. Не могу понять почему вощникает ошибка
пишет nulljava.lang.NullPointerException
Где он там нашёл нулевой указатель хоть убей не пойму.


Ну ты посмотри stacktrace-то
...
Рейтинг: 0 / 0
15.05.2012, 13:56:05
    #37795033
Ura!
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование из blob в clob
Хм, а где я его увижу? Это же всё под ораклом пишется - сохранённый в БД класс. Где у него там standard error stream - х.з.
...
Рейтинг: 0 / 0
15.05.2012, 15:06:02
    #37795263
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование из blob в clob
Ura!Хм, а где я его увижу? Это же всё под ораклом пишется - сохранённый в БД класс. Где у него там standard error stream - х.з.
на ЯП самого БД будет проще и быстрее работать. Снаружи Java только дернешь процедуру.
...
Рейтинг: 0 / 0
15.05.2012, 15:36:31
    #37795372
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование из blob в clob
типа такого
Код: 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
15.05.2012, 15:38:50
    #37795386
Ura!
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование из blob в clob
Спасибо. Видимо придётся всё-таки на PL/SQL писать.
...
Рейтинг: 0 / 0
15.05.2012, 16:18:41
    #37795509
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование из blob в clob
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
15.05.2012, 17:18:08
    #37795680
Тупой Пух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование из blob в clob
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
Форумы / Java [игнор отключен] [закрыт для гостей] / Преобразование из blob в clob / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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