procedure TForm1.Button1Click(Sender: TObject);
var SQLStr: String;
Stream: TMemoryStream;
begin
SQLstr := 'insert into BlobTest (ID,Name,Photo) values (1,'''+Edit1.Text + ''',:Photo)';
Query1.SQL.Text := SQLstr ;
Stream := TMemoryStream.Create;
Image1.Picture.Graphic.SavetoStream(Stream);
Stream.Position := 0;
Query1.Params[0].LoadFromStream(Stream,ftBlob);
Stream.free;
{Query1.Params[0].LoadFromStream();
LoadFromFile('C:\Temp\BGCC.JPG',ftBlob);}
Query1.ExecSQL; Query1.Close;
end;
var SQLStr: String;
Stream: TMemoryStream;
begin
SQLstr := 'insert into BlobTest (ID,Name,Photo) values (1,'''+Edit1.Text + ''',:Photo)';
Query1.SQL.Text := SQLstr ;
Stream := TMemoryStream.Create;
Image1.Picture.Graphic.SavetoStream(Stream);
Stream.Position := 0;
Query1.Params[0].LoadFromStream(Stream,ftBlob);
Stream.free;
{Query1.Params[0].LoadFromStream();
LoadFromFile('C:\Temp\BGCC.JPG',ftBlob);}
Query1.ExecSQL; Query1.Close;
end;
Oracle8i Enterprise Edition Release 8.1.7.3.0 - Production
ClientDataset1.CommandText:='update Hooker set pict2=:ABlob where id=1');
ClientDataset1.Params.ParamByName('ABlob').LoadFromFile ('d:\tmp.bmp',ftBlob);
ClientDataset1.ExecSQL;
这个我适过了不行啊Tclientdataset好像和TQuery不一样
这已实践证明:Delphi BUG你可以使用FieldByName('BlobField').LoadFromStream来插入,
但对于Oracle,可能要使用如下组件配合:
TClientDataSet->TDataSetProvider->TTable(not TQuery)->Oracle.