Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.08;
Скачать: CL | DM;

Вниз

Возможно глупый вопрос, как сохранить данные из blob-поля в...   Найти похожие ветки 

 
HMT   (2004-07-12 15:19) [0]

Как сохранить из blob-поля в файл или stream.


 
vv_fran   (2004-07-12 16:23) [1]

из FAQ:как работать с BLOB?
Достаточно просто. Даже если вы указываете подтип блоба (sub_type), серверу все равно, что вы будете там хранить - текст, картинку или звук.
Для чтения и записи в конкретной библиотеке доступа обязательно есть поток (TStream) типа TBlobStream, TIBBlobStream и т.п. Например, сохранить содержимое столбца blob в файл можно таким образом:
procedure TForm1.Button1Click(Sender: TObject);
var B: TIBBlobStream;
begin
 B:=IBDataSet1.CreateBlobStream(IBDataSet1.FieldByName("BLB") as TBlobField, bmRead);
 B.SaveToFile("c:\blob.bin");
 B.Free;
end;

Практически то же самое - при записи, однако тут есть два варианта:
1. передача blob через параметр:
IBQuery1.ParamByName("blb").asBlob:=blobvar;
обратите внимание что asBlob принимает значение в виде простой строки. Действительно, строки в последних версиях Delphi могут содержать любую, в т.ч. двоичную информацию. Поэтому значение параметру blob можно присваивать и как asString.
2. изменение столбца "редактируемого" DataSet:
IBDataSet1.Edit;
B:=IBDataSet1.CreateBlobStream(IBDataSet1.FieldByName("BLB") as TBlobField, bmWrite);
B.LoadFromFile("c:\blob.bin");
B.Free;
IBDataSet1.Post;
Обратите внимание, что метод B.Free вызывается перед вызовом IBDataSet1.Post.
Также, вопреки документации, давно (по крайней мере в версии IB 4.0 и выше) можно спокойно передавать и принимать blob как параметры процедуры. Существует, однако, обязательное условие - поскольку blob это дисковая структура, записываемый blob должен быть сохранен в столбце таблицы (insert/update), а считываемый blob должен быть выбран из таблицы (хотя можно из из функции чтения blob, например LoadBlobFromFile из UDFDEMO).
Для работы с blob на сервере можно использовать UDF например из FreeUDFLib.


 
ocean   (2004-07-13 13:30) [2]


> B.SaveToFile("c:\blob.bin");

Такого метода нет у TBlobStream


 
Johnmen ©   (2004-07-13 13:37) [3]

>Такого метода нет у TBlobStream

А кто говорил про TBlobStream ?



Страницы: 1 вся ветка

Текущий архив: 2004.08.08;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.024 c
14-1090439118
Apsi
2004-07-21 23:45
2004.08.08
Базы данных Dbase без BDE!!!


1-1090594134
fess
2004-07-23 18:48
2004.08.08
Re Chart


1-1090403696
Mell
2004-07-21 13:54
2004.08.08
как получить handle контрола на чужей форме


8-1085227370
ПсихЪ_клон
2004-05-22 16:02
2004.08.08
Поключение функции из C++ DLL в Delphi (DirectDraw Alpha Blendin)


14-1090332362
Piter
2004-07-20 18:06
2004.08.08
Как определить поддержку Unicode системой?