Загрузить изображение (Blob) из SQLite в изображение и ListView - PullRequest
0 голосов
/ 27 января 2019

Я пытаюсь загрузить изображение из большого двоичного объекта в базе данных SQLite в ListView.

Вот моя база данных SQLite:

CREATE TABLE [Pictures](
[PicId] INT, 
[UsersImage] BLOB);

Вот код:

procedure LoadFromBlob;
var
  BlobStream: TStream;
begin

  Form4.FDConnection1.Connected := True;

  try
    Form4.FDQuery1.Active := True;
    Form4.viewimgquery.Active := True;
    Form4.FDQuery1.Open;
    Form4.viewimgquery.Open;

    Form4.viewimgquery.First;
    while (not Form4.viewimgquery.EOF) do
    begin
      // access a stream from a blob like this
      BlobStream := Form4.viewimgquery.CreateBlobStream
        (Form4.viewimgquery.FieldByName('UsersImage'), TBlobStreamMode.bmRead);
      // access a string from a field like this
      if (Form4.viewimgquery.FieldByName('PicId')
        .AsInteger = Form4.FDQuery1.FieldByName('ID').AsInteger) then
      begin
        // load your blob stream data into a control
        Form4.viewimage.Bitmap.LoadFromStream(BlobStream);
        Form4.ListView1.items.Add();
        BlobStream.Free;
        Form4.viewimgquery.Next;

      end;
    end;
  except
    on e: Exception do
    begin
      // ShowMessage(e.Message);
    end;
  end;
  Form4.FDConnection1.Connected := False;

end;

Мой SQL, который я использую с запросом viewimage, прост:

SELECT *
FROM PICTURES
WHERE PICID = :PicId

Если я изменю SQL на (select * from pictures) и установлю запрос активным во время разработки, то увидим всеизображения загружаются в ListView.Это говорит о том, что мои живые привязки настроены правильно.

Моя проблема в том, что при вызове процедуры в ListView ничего не загружается.

Я не уверен, что моя проблема связана сSQL statmaent или с кодом.

...