powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Запись Массива в BLOB
7 сообщений из 7, страница 1 из 1
Запись Массива в BLOB
    #34566503
bedazzled
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Необходимо записать массив из структур с разными типами данных в BLOB побайтно через Stream. JDBC.
Не подскажите?
...
Рейтинг: 0 / 0
Запись Массива в BLOB
    #34568646
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Твоя задача разбита на 2 этапа:

1) Формирования потока байтов, содержащего массивы структур ... и т.д.
2) Подключение к базе, открытие курсора, открытие объекта BLOB и направление этого потока в BLOB.Stream.

Что ты уже сделал и что у тебя не получилось конкретно?


----------------
С уважением
...
Рейтинг: 0 / 0
Запись Массива в BLOB
    #34570917
bedazzled
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел пример, но не могу до конца понять, как он работает:

Есть вот такая процедурка:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 static   void  fillBlob (Connection conn, BLOB blob,  long  offset,  long  length)
     throws  Exception
    {
    OutputStream outstream = blob.getBinaryOutputStream(offset);
     int  i =  0 ;
     int  chunk =  10 ;
     byte  [] data = {  1 ,  1 ,  3 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  8 ,  8 ,  7  };
     while  (i < length)
    {
    outstream.write(data,  0 , chunk);
    i += chunk;
     if  (length - i < chunk)
    chunk = ( int ) length - i;
    }
    outstream.close();
    }

Вызывается она вот так:
Код: plaintext
1.
fillBlob (conn, blob,  11 ,  50 ); 

Не до конца пойму значения параметров chunk и offset, поигрался ими, не помогло. Записывается только 10 байт, хвост из 8,8,7 обрубается.
Не подскажите, как поправить функцию, чтобы можно было записывать произвольное число байтов. И вместо массива byte [] писать мой массив структур с данными в виде байтов?
...
Рейтинг: 0 / 0
Запись Массива в BLOB
    #34570927
bedazzled
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разобрася с функцией, у Oracle в мануале ошибка была, надо писать
Код: plaintext
outstream.write(data, i, chunk);
вместо
Код: plaintext
outstream.write(data,  0 , chunk);
Открытым остался вопрос как массив структур в поток байтов преобразовать.
...
Рейтинг: 0 / 0
Запись Массива в BLOB
    #34571174
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
java.io.ObjectOutputStream
...
Рейтинг: 0 / 0
Запись Массива в BLOB
    #34571640
bedazzled
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал. Получается , если писать отдельно поля структуры следующим образом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 
OutputStream outstream = blob.getBinaryOutputStream();
ObjectOutputStream oos =  new  ObjectOutputStream(outstream);
...

 while  (iter.next()) {
   oos.writeInt(iter.ID());
   oos.writeObject(iter.A1());
   oos.writeObject(iter.A2());
   oos.writeObject(iter.A3());   
   }

А целиком всю структуру толкнуть не получается.
...
Рейтинг: 0 / 0
Запись Массива в BLOB
    #34571697
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Объект должен быть сериализуемым, т. е. реализовывать интерфейс java.io.Serializable
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Запись Массива в BLOB
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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