设计了一个三层体系结构:  数据库: Sql server 2000       其他数据如字符、备注、数值等均可正常存储,修改。
 
    但 将图片 bmp 或 jpg 加入到"photo"字段(类型为image)后,不能更新到远程数据库中. 即图片不能正常更新(加入)到远程数据库中...      如何解决,请高手们支持............
     

解决方案 »

  1.   

    var
      MemStream : TMemoryStream;
    begin
      MemStream := TMemoryStream.Create;
      MemStream.LoadFromFile( 'test.bmp' );
      try
        DataSet.Edit;
        (TBlobField( DataSet.FieldByName('image字段'))).LoadFromStream( MemStream );
        DataSet.Post;
      finally
        MemStream.free;
      end;
    end;
      

  2.   

    我使用一个DBImage控件,通过以下方法加入图片:
    ///////////////////////////////////////////////////
    procedure TForm1.SpeedButton1Click(Sender: TObject);
    var// tmpImage : TBitmap;
        ts : TStream;
        fs : TFileStream;
    begin
      if not OpenDialog1.Execute then exit;
      //tmpImage := TBitmap.Create;
      try
        //tmpImage.LoadFromFile(OpenDialog1.FileName);
        cdbsetUser.Edit;
        ts := cdbsetUser.CreateBlobStream(cdbsetUser.FieldByName('photo'),bmReadWrite);
        fs := TFileStream.Create(OpenDialog1.FileName,fmOpenRead);
        try
          ts.CopyFrom(fs,0);
          //tmpImage.SaveToStream(ts);
        finally
          ts.Free;
          fs.Free;
        end;
        //DBimage1.Picture.Assign(tmpImage);
      finally
        //tmpImage.Free;
      end;
    end;
    //////////////////////////////////////////////////
    无论使用TBitmap或TStream, 在按以上<<按钮>>后当前记录均可以显示出图片来,
    但使用 cdbsetUser.ApplyUpdates(0); 后图片消失。查看数据库SQL server 2000数据,photo字段没有数据存在。
      

  3.   

    使用IMAGE空间,只须一行
      adoquery1.fieldvalues['...'].assagn(image1.pictrue.bitmp);
      

  4.   

    同意  sharer(sharer) 
    我也是这样做的