使用的是Adodataset控件。在保存图片时不知道改如何保存到sql server数据库中。也不知道该如何从数据库中读取。恳请各位高手帮忙,最好有源代码。万分感谢!

解决方案 »

  1.   

    把字段牵制转换成 TBlobField 后进行操作。1、图片存储操作,可采用直接从文件加载,也可以从文件流
      TBlobField(adsData.Fields[i]).LoadFromFile(fileName);
      TBlobField(adsData.Fields[i]).LoadFromStream(stream);2、图片读取操作,可存储成文件,也可存储成文件流
      TBlobField(adsData.Fields[i]).SaveToFile(fileName);
      TBlobField(adsData.Fields[i]).SaveToStream(stream);
      

  2.   


    'FImage' image   列   
        
        
      procedure   TForm1.Button1Click(Sender:   TObject);   
      begin   
            if   OpenPictureDialog1.Execute   then   
            Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);   
      end;   
        
      procedure   TForm1.Button2Click(Sender:   TObject);   
      begin   
            ADOTable1.Append;         
            ADOTable1.FieldByName('id').AsString:= '1';//加主键字段
            TBlobField(ADOTable1.FieldByName('FImage')).LoadFromFile(OpenPictureDialog1.FileName);   
            ADOTable1.Post;   
      end;
      

  3.   


    use Jpeg//----------------------向数据库加入图片--------------------
    procedure TForm1.suiButton1Click(Sender: TObject);
    var
      mStream:TMemoryStream;
      JpgFile:TjpegImage;
    begin
         //-----------向数据库添加图片
         adoquery1.Append;
         mstream:=TMemoryStream.Create;
         JpgFile:=TjpegImage.Create ;
      if OpenDialog.Execute then
      begin
      try
        mstream.LoadFromFile(OpenDialog.FileName);
        mStream.Position :=0;
        jpgfile.LoadFromStream(MStream);
         adoQuery1.FieldByName('xp').Assign(JpgFile);
        adoquery1.Post;
       finally
          mstream.Free;
       end;
       end;
    end;//--------------------------------显示图片----------------------------------
    procedure TForm1.suiButton2Click(Sender: TObject);
    var 
      mStream:TMemoryStream; 
      JpgFile:TjpegImage; 
    begin
      //显示图片
      if not ADOQuery1.FieldByName('xp').IsNull then begin ;
        mStream:=TMemoryStream.Create ; 
        JpgFile:=TjpegImage.Create ; 
        TBlobField(ADOQuery1.FieldByName('xp')).SaveToStream(mStream);  
        mStream.Position :=0; 
        jpgfile.LoadFromStream(MStream); 
        DBImage1.Picture.Assign(JpgFile);
     end 
     else begin
       //image2.Picture :=nil;
     end; 
    end;