![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
картинки в Oracle9i [D6, Oracle]
UncleRu © (2002-10-02 20:40:00)Здраствуйте, профессионалы!
Использую для связи с Oracle9i DOA (Direct Oracle Access) и стоит задача записывания BLOB-полей (фотографий). Подскажите, плиз, как можно осуществлять запись и считывание картинок в базу (из базы) Oracle9i не используя BDE и промежуточных файлов, а используя потоки (TStream) и DOA. Буду благодарен за готовый пример.
fnatali (2002-10-04 06:17:00) [1]OCIQuery - это компонент из библиотеки NCOCI для доступа к Oracle. Если ты пользуешься DOA, то используй оттуда аналогичный. Здесь не принципиален вид DataSet-а, IMHO.
UncleRu (2002-10-04 00:26:00) [2]Спасибо за совет. Но что-то я не совсем просёк как всё это через Oracle Call Interface реализовывать. Откуда эти OCIQuery брать? Может кто подскажет как всю эту процедуру через "стандартный" TLobLocator сделать?
fnatali (2002-10-03 06:24:00) [3]В поле типа LONG RAW.
var
bit : Tbitmap;
MS : TMemoryStream;
bit:=Tbitmap.Create;
// Чтение
MS := TMemoryStream.Create;
TBlobField(OCIQuery1.FieldByName("foto")).SaveToStream(MS);
MS.Seek(soFromBeginning, 0);
if ms.Size>0 then
begin
bit.LoadFromStream(ms);
end;
...
bit.free;
// Занесение
ms := TMemoryStream.Create;
bit.SaveToStream(ms);
with OCIQuery1 do begin
active:=false;
sql.clear;
sql.add("update vid set foto=:par where id=:par1");
parambyname("par1").asinteger:=nom;
ParamByName("par").DataType := ftBlob;
ParamByName("par").ParamType := ptInput;
ParamByName("par").LoadFromStream(ms,ftBLOB);
execsql;
end;
ms.free;