2013-09-01 3 views
0

Я пытаюсь загрузить изображение из определенного места в моей базе данных в изображение, но мой код работает с некоторыми проблемами, которые я не могу решить.Загрузите изображение из базы данных 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.

+0

Помните, что ваш код подвержен атакам [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

ответ

1

Затем я использую следующее загрузить изображение в пустой TImage:

Тогда Image5.Picture тоже пусто, и графический объект еще не назначен; вы не можете называть LoadFromStream.

Вы должны знать тип графика, создавать и загружать этот рисунок, а затем назначать его компоненту изображения, например shown in this answer.

 Смежные вопросы

  • Нет связанных вопросов^_^