Get access to over 100 FireMonkey cross platform samples for Android, IOS, OSX, Windows, and Linux!

AndroidAppmethodCode SnippetDelphiDemoFiremonkeyIOSOSXWindows

Read And Write A Blob Field Using FireDAC With Firemonkey On Android And IOS

Delphi XE5 Firemonkey FireDAC BlobsIf you’re using the FireDAC components that comes with Delphi XE5 Firemonkey and you want to save a bitmap or some other type of data to a blog field on your embedded database (either SQLite, IBlite, or Interbase To Go) it can be a bit tricky. For saving it is pretty standard fair with the TFDDataSet.LoadFromStream() which will load a stream like a memory stream into a field. The important piece to reading the blob back out is is the TFDDataSet.CreateBlobStream() function. I have included two functions below which show an example of how to read and write a string and bitmap data from an image using a FireDAC TFDQuery component. This method of reading and writing a blog works on Android and IOS as well as Windows and OSX.
procedure SaveToFireDACBlob;
var
MemStream: TMemoryStream;
begin
FireDAC.Connected := True;
MemStream := TMemoryStream.Create;
try
Image1.Bitmap.SaveToStream(MemStream);
MemStream.Seek(0,0);
FDQueryInsert.ParamByName('Media').LoadFromStream(MemStream,ftBlob);
FDQueryInsert.ParamByName('MType').AsString := '0';
FDQueryInsert.ExecSQL();
except
on e: Exception do
begin
//ShowMessage(e.Message);
end;
end;
MemStream.Free;
FireDAC.Connected := False;
end;

procedure LoadFromFireDACBlob;
var
BlobStream: TStream;
begin
FireDAC.Connected := True;
try
FDQuerySelect.Open;
FDQuerySelect.First;
while(not FDQuerySelect.EOF)do begin
// access a stream from a blob like this
BlobStream := FDQuerySelect.CreateBlobStream(FDQuerySelect.FieldByName('Media'),TBlobStreamMode.bmRead);
// access a string from a field like this
if (FDQuerySelect.FieldByName('MType').AsString='0') then
begin
// load your blob stream data into a control
ImageViewer.Bitmap.LoadFromStream(BlobStream);
end;
BlobStream.Free;
FDQuerySelect.Next;
end;
except
on e: Exception do
begin
//ShowMessage(e.Message);
end;
end;
FireDAC.Connected := False;
end;

Head over and check out the FireDAC demo from Embarcadero and then use the functions to read and write your blob data.

Have Delphi Firemonkey questions? Ask and get answers on StackOverflow.

Related posts
DelphiDemoFiremonkeyIOSLinuxOSXWindows

Bring OpenAI Agents, Vision, Audio, And Realtime AI To Firemonkey

DelphiIDEWindows

Add AI Pair Programming, Refactoring, And Multi-LLM Workflows To RAD Studio

DelphiDemoFiremonkeyLibraryWindows

Bring OpenAI, Local LLMs, And AI Assistants To FMX Apps

DelphiFiremonkeyLibrary

DelphiGemini Brings Native Google Gemini AI Integration To Delphi

Sign up for our Newsletter and
stay informed
[mailpoet_form id="1"]

8 Comments

Leave a Reply