Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];

Вниз

Возможно глупый вопрос, как сохранить данные из 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.082 c
14-1089952269
ИМХО
2004-07-16 08:31
2004.08.08
Музыкальный слух


3-1089697360
Nero
2004-07-13 09:42
2004.08.08
Создание БД


14-1090242201
pasha_golub
2004-07-19 17:03
2004.08.08
Шахматы: извращения, байки, приколы и т.д.


9-1082469550
Creep
2004-04-20 17:59
2004.08.08
Canvas


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский