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