procedure TForm4.CttMButton1Click(Sender: TObject);
var
  Stream:TMemoryStream;
begin
  try
    Stream := TMemoryStream.Create; //  创建内存流
    Image1.Picture.Graphic.SaveToStream(Stream);   // 将图片保存到内存流中
    Stream := Stream;
   //Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);(另一种方法)
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('Insert into BD_Photo values (:GUID,:sPhoto)');
    ADOQuery1.Parameters.ParamByName('GUID').Value :='AB007A7A-00C2-4F4C-BB7F-1D746B17F09A';
    ADOQuery1.Parameters.ParamByName('sPhoto').LoadFromStream(Stream,ftBlob); //   sPhoto属性image
                          //读取保存的内存图
    ADOQuery1.ExecSQL;
  finally
    Stream.Free;     // 释放内存流
  end;
end;这是我在网上找到的源码,但是我取Stream的值时是空值,而且在ADOQuery1.ExecSQL执行的时候报错‘对于造型说明无效的字符值’,我主要的目的是想把图片保存到SQL Server数据库中,但是现在还没有弄好,我不要保存路径的那种, 如果谁那边有源码请共享一下。读取保存的内存图

解决方案 »

  1.   


     Stream := TMemoryStream.Create;
                    Jpg := TjpegImage.Create;
                    TBlobField(ADOQuery2.FieldByName('Picture')).SaveToStream(Stream); 
                    Stream.Position := 0;
                    Jpg.LoadFromStream(Stream);
                    Image1.Picture.Assign(Jpg);
      

  2.   

    ADOQuery1.fieldbyname('photo').assign(image1.picture.graphic)
      

  3.   

    http://aliang8088378.blog.163.com/blog/static/35390272201051144819951/
      

  4.   


    procedure TForm4.CttMButton1Click(Sender: TObject);
    var
      Stream:TMemoryStream;
    begin
      try
        Stream := TMemoryStream.Create; //  创建内存流
        Image1.Picture.Graphic.SaveToStream(Stream);   // 将图片保存到内存流中
        //Stream := Stream;
       Stream.position := 0; //《==========
       //Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);(另一种方法)
        ADOQuery1.Close;
        ADOQuery1.SQL.Clear;
        ADOQuery1.SQL.Add('Insert into BD_Photo values (:GUID,:sPhoto)');
        ADOQuery1.Parameters.ParamByName('GUID').Value :='AB007A7A-00C2-4F4C-BB7F-1D746B17F09A';
        ADOQuery1.Parameters.ParamByName('sPhoto').LoadFromStream(Stream,ftBlob); //   sPhoto属性image
                              //读取保存的内存图
        ADOQuery1.ExecSQL;
      finally
        Stream.Free;     // 释放内存流
      end;
    end;