看看吧
procedure TF_B_Gssgrd.DBImage_ZPClick(Sender: TObject);
{更新照片}
begin
  if MessageDlg('更新照片?',mtConfirmation, [mbYes, mbCancel], 0) = mrYes then
  begin
    {从《参保人员情况登记表》(CB_RY)中更新照片}
    with DataModule_GS.Query_CBRY  do
    begin
      Close;
      UnPrepare;
      SQL.Clear;
      SQL.Add('select ZP from CB_RY where SBHM=:SBHM and GSSCCBSJ IS NOT NULL');
      ParamByName('SBHM').Asstring:=DBEdit_SBHM.Text;
      Prepare;
      Open;
    end;{with_CBRY}
    if DataModule_GS.Query_CBRY.FieldByName('ZP').AsString='' then
      DBImage_ZP.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'SB_Photo\无照片.BMP')
    else
      DBImage_ZP.Picture:=DBImage_CBRY.Picture;
    DataModule_GS.Query_CBRY.Close;
  end;
end;

解决方案 »

  1.   

    用AdoQuery直接存取,秩序将TGraphicField将字段转换一下就可以啦,
      

  2.   

    var
      PicStream:TMemoryStream;
    -----------------------------
      PicStream:=TMemoryStream.Create  PicStream.LoadFromFile(FileNamebyPath);
      //或img.picture.bitmap.SaveToStream(PicStream);  Query1.ParamByName('pic').LoadFromStream(PicStream,ftBlob); PicStream.free;
      

  3.   

    Var
      AStream: TStream;
    begin
      AStream := TStream.Create;
      Image1.SaveToStream(AStream);
      TBlobField(Table1.Fields[1]).LoadFormStream(AStream);
      Table1.Post;
    end;
      

  4.   

    三层结构中,我通过OleContainer控件实现保存大文本字段(word文档)的,供参考:
    {保存word文档}
    procedure TFrm_kj_kfxm_sqs.Button2Click(Sender: TObject);
    var memorystream:Tmemorystream;
    begin
      inherited;
      memorystream := tmemorystream.Create;
      //保存
      try
        OleContainer.SaveToStream(memorystream1);
        MemoryStream.Position:= 0;
        cds_data.edit;
        TblobField(cds_data.FieldByName('sqwd')).LoadFromStream(MemoryStream1);
        cds_data.Post;
      finally
        memorystream.Free;
      end;
      //显示
      try
         TblobField(cds_data.FieldByName('sqwd')).SaveToStream(Memorystream2);
         MemoryStream2.Position:= 0;
         OleContainer2.Show;
         OleContainer2.LoadFromStream(memorystream2);
      finally
        memorystream2.Free;
      end;
    end;
    =====
      

  5.   

    更正:上面cds_data.post;改成:cds_data.applyupdates(-1);
      

  6.   

    用流进行操作啊!
    csdn上以前的贴子很多,自己看看吧。
      

  7.   

    数据库用BLOB字段,若为MSSQL设为Image类型保存:Adoquery1.Parameters.ParamByName('CC').LoadFromFile(FileNameByPath, ftBlob);提取:(Adoquery1.FieldByName('模板') as TBlobField).SaveToFile(FileNameByPath, ftBlob);-------------------------------------------------------------------
    使用stream:var
      ss:TMemoryStream
    --------------------
      ss:=TMemoryStream.Create
      ss.LoadFromFile(FileNameByPath)保存:Adoquery1.Parameters.ParamByName('CC').LoadFromStream(ss, ftBlob);
    ss.free;
      

  8.   

    renzhm(戴尔飞) 你好我照你的做法去做可是怎么数据库里什么也没有?
    以下是我的代码:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      PicStream:TMemoryStream;
    begin
    PicStream:=TMemoryStream.Create;
    PicStream.LoadFromFile('E:\picture\aa.bmp');
    Adoquery1.Parameters.ParamByName('contant').LoadFromStream(PicStream, ftBlob);
    PicStream.free;
    end;
      

  9.   

    在数据库中看是看不到的,取出来看看:(Adoquery1.FieldByName('图片字段') as TBlobField).SaveToStream(PicStream, ftBlob);img.picture.bitmap.LoadFromStream(PicStream);
      

  10.   

    sorry!
    --------
    以上我回答的所有地方有个误笔:SaveToStream(PicStream, ftBlob);或SaveToFile(FileNameByPath, ftBlob);改为:
    SaveToStream(PicStream);SaveToFile(FileNameByPath)
      

  11.   

    还是看不见!要不要加adoquery1.Insert;和adoquery1.post;语句
      

  12.   

    不会吧,老兄:adoquery1.SQL.Text:=('insert into table(Field1,....PicField) value(:A,...:Pic))';...
    Adoquery1.Parameters.ParamByName('Pic').LoadFromStream(PicStream, ftBlob);adoquery1.ExecSQL;是执行SQL语句呀!取出:
    adoquery1.SQL.Text:='select * from Table';
    adoquery1.open;
    (Adoquery1.FieldByName('图片字段') as TBlobField).SaveToStream(PicStream);img.picture.bitmap.LoadFromStream(PicStream);