将图片从Access数据库加载到TImage组件

将图片从Access数据库加载到TImage组件,image,delphi,ms-access,load,delphi-7,Image,Delphi,Ms Access,Load,Delphi 7,我试图将图片从数据库中的特定位置加载到图像中,但我的代码遇到了一些无法解决的问题 基本上,我希望在一个应用程序中加载一个由唯一id指定的图像,该应用程序针对具有不同帐户的不同用户。图像基本上应该加载用户先前保存的图片 因此,首先我使用以下查询来确定我需要的图片: procedure TForm12.BitBtn1Click(Sender: TObject); begin with ADOQuery7 do begin Close; Sql.Clear; Sql.A

我试图将图片从数据库中的特定位置加载到图像中,但我的代码遇到了一些无法解决的问题

基本上,我希望在一个应用程序中加载一个由唯一id指定的图像,该应用程序针对具有不同帐户的不同用户。图像基本上应该加载用户先前保存的图片

因此,首先我使用以下查询来确定我需要的图片:

procedure TForm12.BitBtn1Click(Sender: TObject);
begin
  with ADOQuery7 do
  begin
    Close;
    Sql.Clear;
    Sql.Add('SELECT Profile_Picture FROM profile WHERE username='+QuotedStr(edit12.text));
    Open;
  end;
end;
它可以很好地工作,并且确实针对具有指定用户名的图片的字段。然后,我使用以下命令将图片加载到空图像中:

procedure TForm12.BitBtn2Click(Sender: TObject);
var
  AStream: TMemoryStream;
begin
  AStream := TMemoryStream.Create;
  try
    if ADOquery7.Active then
    begin
      TBlobField(ADOQuery7.FieldByName('Profile_Picture')).SaveToStream(AStream);
      AStream.Position := 0;
      Image6.Picture.Graphic.LoadFromStream(AStream);
    end;
  finally
    AStream.Free;
  end;
结束

但我总是遇到访问冲突错误。有人知道问题出在哪里吗? 从中加载图像的文件存储在OLE对象列中

然后,我使用以下命令将图片加载到空图像中:

procedure TForm12.BitBtn2Click(Sender: TObject);
var
  AStream: TMemoryStream;
begin
  AStream := TMemoryStream.Create;
  try
    if ADOquery7.Active then
    begin
      TBlobField(ADOQuery7.FieldByName('Profile_Picture')).SaveToStream(AStream);
      AStream.Position := 0;
      Image6.Picture.Graphic.LoadFromStream(AStream);
    end;
  finally
    AStream.Free;
  end;
然后
Image5.Picture
也为空,图形对象尚未指定;不能对其调用
LoadFromStream


您必须知道图形类型,创建并加载该图形,然后将其分配给图像组件,例如。

请注意,您的代码容易受到攻击。您可以找到一个更有趣的解释和克服Delphi的ADO的方法。