procedure Tform1.Button1click(sender: tobject);
var
  sFileName: string;
  fonction BlobContentToString(const FileName: string): string;
  with TFileStream.create(FileName, fmOpenRead) do
  try
    SetLength(Result, Size);
    Read(Pointer(Result)^, Size);
  finally
    Free;
  end;begin
  if (OpenDialog1.execute) then
  begin
    sFileName := Opendialog1.FileName;
    adosBlobs.FieldByName('blobs').AsString := BlobContentToString(sFileName);
    adodsBlobs.Post;
  end;
end;

解决方案 »

  1.   

    var
      ms:Tmemorystream;
    begin
      ms:=Tmemorystream.create;
      Query1.open;
      Query1.insert;
      Query1.filedbyname('field1').value:=...
      Query1.filedbyname('field2').value:=...
      OleContainer1.savetostream(ms);
      ms.position:=0;
      TBlobField(Query1.fieldbyname('存放文档的字段')).loadfromstream(ms);
      ms.free;
      Query1.post;
      Query1.applyupdates;
      
    end;
      

  2.   

    // 如果是select
    Query1.Edt;
    Query1.FieldByName( 'blob1' ).LoadFromFile( sFileName );
    Query1.Post; // 如果是update或insert,用参数
    Query1.ParamByName( 'blob1' ).LoadFromFile( sFileName );
    Query1.Exec;