FireDAC.MySQL Sample

From RAD Studio Code Examples
Jump to: navigation, search

This sample demonstrates how to use FireDAC to work with MySQL databases.

Location

You can find the MySQL sample project at:

Description

The MySQL getting started sample shows how to use FireDAC with MySQL databases. This sample allows the user to create temporary connection definition at run time and master-details relationship between datasets using TFDQuery to work with MySQL databases.

How to Use the Sample

  1. Navigate to the location given above and open GettingStarted.dproj.
  2. Press F9 or choose Run > Run.

Files

File in Delphi Contains

GettingStarted.dproj
GettingStarted.dpr

The project itself.

fGettingStarted.pas
fGettingStarted.fmx

The main form.

Implementation

The sample implements the following features.

Creating temporary connection definition

The simplest way to configure connection to MySQL database at run time is to build a temporary connection definition:

with dbMain do begin
  Close;
  // create temporary connection definition
  with Params do begin
    Clear;
      Add('DriverID=MySQL');
      Add('Server=127.0.0.1');
      Add('Port=3306');        
      Add('Database=FDDemo');  
  end;
  Open;
end;

In the sample, the temporary definition is created when clicking the Connect button.

Master Details

In the demo database, the Categories and Products tables have one-to-many relation by CategoryID field. The qryCategories.SQL property is set up as follows:

select * from Categories

In addition, the qryProducts.SQL property is set up as follows:

select * from Products
where CategoryID = :CategoryID

Finally, the qryProducts.MasterSource property is set to dsCategories, while the MasterFields property is set to CategoryID. This creates a master-details relationship between the datasets.

Executing queries

Simple queries execution is demonstrated via ExecSQL method of TFDConnection.

Inserting a record providing parameters of various types:

dbMain.ExecSQL('insert into Categories(CategoryName, Description, Picture) ' +
               'values(:N, :D, :P)', ['New category', 'New descr', $0334]);

Updating records:

 dbMain.ExecSQL('update Products set UnitPrice = UnitPrice * :P1 + :P2 ' +
                'where ProductID < 3', [Random(5), Random(3)]);

Deleting a record:

dbMain.ExecSQL('delete from Categories where CategoryName like :N', ['New category']);

Getting a scalar value from the database:

iID := dbMain.ExecSQLScalar('select MAX(CategoryID) from Categories');

Uses

See Also

Samples