How to insert an InterBase blob with RAD Studio using FireDAC and LoadFromFile
I was asked today if RAD Studio had any easy way to insert a blob (picture image) into an InterBase blob column?
This is one way of inserting blob data using C++ Builder or Delphi. There are several ways to accomplish this task. This example is just one way of doing it. This example is using the FireDAC LoadFromFile method.
Create a table in an InterBase database with a field that can store non-text Blobs: create table table1 (images blob sub_type 0);
Using C++ Builder or Delphi:
1. Create a new FireMonkey (FMX) or VCL Form.
2. Add FDConnection to Form. Double-click on the FDConnection component and connect to your InterBase Database.
3. Add FDQuery and a Button on the form.
4. Double-click the FDQuery component and enter this SQL statement to be executed: select images from table1
5. Using the Object Inspector, set the FDQuery component's Active property to true.
6. Right-click the FDQuery component and choose Fields Editor.
7. Right- click on the blank space of Form1.FDQuery1 Fields Editor and choose Add Fields.
8. Select IMAGES in the list and add.
9. Double click on the TButton (to be used to Insert the image into the InterBase images blob column).
10. Add the following lines to the Button OnClick event:
For C++ Builder:
void __fastcall TForm3::Button1Click(TObject *Sender)
{
FDQuery1->Append();
FDQuery1IMAGES->LoadFromFile(L"c:\\data\\boots.bmp");
FDQuery1->Post();
}
Note: images is the field name defined as blob in the InterBase table1.
And c:\\data\\boots.bmp is where the location of the image file to be inserted.
If you are curious about the prefix 'L' before "c:\\data\\boots.bmp", the 'L' prefix is used to define wide-character by default. The 'L' prefix is ALWAYS used for wide literals, as it was the ONLY way to define wide literals at all.
11. Save the project/form/unit and Run.
12. Click on the Button, and you will insert a blob entry into your InterBase database table :-) Congratulations!
To verify the Blob is inserted:
1. Drop a TStringGrid and TImage component on the form.
2. Using Live Bindings, bind FDQuery1 to the StringGrid, and bind IMAGES to the TImage1 bitmap:
3. Save the project and run. You should see the image displayed on the TImage, like this:
It's that easy using FireDAC and LoadFromFile to insert an Image into an InterBase blob column!


Comments
-
Please login first in order for you to submit comments