Я пытаюсь загрузить изображение из определенного места в моей базе данных в изображение, но мой код работает с некоторыми проблемами, которые я не могу решить.Загрузите изображение из базы данных Access в компонент TImage
В основном я хочу загрузить изображение, указанное уникальным идентификатором, в приложении, предназначенном для разных пользователей с разными учетными записями. Изображение должно в основном загружать изображение, которое пользователь сохранил ранее.
Итак, сначала я использую следующий запрос, чтобы определить картину мне нужно:
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;
Который работает отлично, и действительно нацеленный на поле, которое имеет изображение с указанным именем. Затем я использую следующее, чтобы загрузить изображение в пустой TImage:
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 Object-column.
Помните, что ваш код подвержен атакам [SQL injection] (http://en.wikipedia.org/wiki/SQL_injection). Вы можете найти более забавное объяснение [здесь] (http://stackoverflow.com/q/332365/859646) и способ преодолеть ADO от Delphi [здесь] (http://stackoverflow.com/questions/16924629/parameters -в-SQL-Дельфы-7). – JRL