Delphi Oracle Blob - PullRequest
       21

Delphi Oracle Blob

4 голосов
/ 17 января 2011

как вставить данные BLOB-объектов в oracle xe из delphi 7 (компонент ado)

Ответы [ 2 ]

6 голосов
/ 17 января 2011

Проверьте эти образцы, используя TAdoQuery компонент.

загрузка данных напрямую из файла

 ADOQuery1.Parameters.AddParameter.Name:='Param1';
 ADOQuery1.Parameters.ParamByName('Param1').LoadFromFile('yourfilename',ftBlob);
 ADOQuery1.SQL.Add('INSERT INTO TableName (FieldName) VALUES (:Param1)');
 ADoQuery1.ExecSQL;

с использованием потока для загрузки данных

 ADOQuery1.Parameters.AddParameter.Name:='Param1';
 ADOQuery1.Parameters.ParamByName('Param1').LoadFromStream(AStream,ftBlob);
 ADOQuery1.SQL.Add('INSERT INTO TableName (FieldName) VALUES (:Param1)');
 ADoQuery1.ExecSQL;

Вы должны знать, что Microsoft Oracle oledb driver несовместим с blob fields, попробуйте вместо этого использовать Oracle OLEDB provider.

В качестве последнего совета, если вы можете, попробуйте использовать другие компоненты для подключения к ORACLE, такие как dbexpress, ANYDAC или ODAC компонентов

0 голосов
/ 17 января 2011

Имейте в виду, что у Oracle есть особый способ обработки больших объектов. Он использует «локаторы больших объектов» (своего рода дескрипторы) для выполнения операций над большими объектами. INSERT возвращает локатор LOB, который затем используется, например, для заполнения LOB. Эта операция может выполняться «за кулисами» драйвером / библиотекой, используемой для доступа к Oracle, или может потребовать некоторого кодирования.

...