平台是Delphi + MySQL...
刚从MS SQL上移植过来的,之前没发现这个问题...现象:
   保存时,显示成功,但图片好像没存进去..
   显示时,提示#42的错误...如何解决?大虾帮看看.....谢了..
----------------------------------------------------------------------->>
//数据结构Field Type Null Key Default   Extra
--------------------------------------------------
IID bigint(20) NO MUL   auto_increment
Photo longblob YES
class varchar(50) YES
Pcode varchar(50) YES
//保存JPG图片
procedure TUpIMGForm.Button2Click(Sender: TObject);
var 
Ms:TMemoryStream;
begin
    ExeSql('delete from pic where pcode='''+pcode+''' ');
    BlobTab.Connection:=DataM.conn;
    try
        ms := TMemoryStream.Create;
        image1.Picture.Bitmap.SaveToStream(ms);
        ms.Position := 0;        //打开数据表并添加一条记录
        BlobTab.Open;
        BlobTab.Append;
        BlobTab.FieldByName('Pcode').AsString:=pcode;
        BlobTab.FieldByName('Class').AsString:=GetFileExt(trim(edit1.Text));
        TBlobField(BlobTab.FieldByName('Photo')).LoadFromStream(ms);
        BlobTab.Post;        ShowMessage( '保存上传图片成功! ');
        UpIMGForm.Close;    finally
        MS.Free; //释放内存流
    end;end; 
//显示图形
procedure TEquEditForm.TabSheet3Show(Sender: TObject);
var 
mStream:TMemoryStream; 
JpgFile:TjpegImage;
begin
    Image1.Picture.Graphic:=nil;
with DataM.q7 do
begin
sql.Clear;
sql.Add('select Photo from Pic where Pcode='''+Trim(Edit1.Text)+''' ');
Open;
if RecordCount>0 then
begin
            try
                mStream:=TMemoryStream.Create ;
                Image1.Picture.Graphic:=TjpegImage.Create ;
                TBlobField(FieldByName('photo')).SaveToStream(mStream); //顯示的轉換為BlobFiled並保存至內存流
                mStream.Position :=0;
                Image1.Picture.Graphic.LoadFromStream(MStream);
            finally
                mStream.Free;
            end;
end;
end;
end;

解决方案 »

  1.   

    var
      Stream: TResourceStream;
      FJpeg: TJPEGImage;
    begin
      Stream := TResourceStream.Create(HInstance, 'J', 'JPEG');  // 这里换成你的 TMemoryStream
      try
        FJpeg := TJPEGImage.Create();
        try
          FJpeg.LoadFromStream(Stream); // 加载数据流
          Image1.Picture.Bitmap.Assign(FJpeg); // 加载到GUI
        finally
          FJpeg.Free;
        end;
      finally
        Stream.Free;
      end;
    end;