FireDAC.TFDQuery.BatchErrorHandling Sample
This sample demonstrates two ways of handling errors in an array DML execution.
Contents
Location
You can find the BatchErrorHandling sample project at:
- Start | Programs | Embarcadero RAD Studio Sydney | Samples and then navigate to:
Object Pascal\Database\FireDAC\Samples\Comp Layer\TFDQuery\ExecSQL\BatchErrorHandling
- Subversion Repository:
- You can find Delphi code samples in GitHub Repositories. Search by name into the samples repositories according to your RAD Studio version.
Description
The BatchErrorHandling sample shows you how to handle errors when executing SQL Command Batches to execute multiple SQL commands. To this end, the sample implements two ways of handling the errors:
- Implementing an OnError event.
- Using the EFDDBEngineException class on a loop.
How to Use the Sample
- Navigate to the location given above and open
BatchErrorHandling.dproj
. - Press F9 or choose Run > Run.
Files
File in Delphi | Contains |
---|---|
|
The project itself. |
|
The main form. |
Implementation
Before running the sample, the main components are configured at design time using the Object Inspector as follows:
- A TFDConnection object named FDConnection1. This is FireDAC connection object that the sample uses to connect to a DBMS. The sample sets the ConnectionDefName property to
Oracle_Demo
.
- A TFDQuery object named FDQuery1. This component implements a dataset capable of executing SQL queries. To this end, the sample configures the following properties of the object:
- The Connection property is set to
FDConnection1
in order to specify the FireDAC connection object. - The SQL property of FDQuery1 is set to
insert into batch_demo values (:id, :name)
.
- The Connection property is set to
When you run the application, you see two buttons labeled as: Using handler and Using loop. Both buttons implement two different ways of handling errors when executing SQL Command Batches. Click on any of the buttons to execute the corresponfing error handling technique. Both error handling techniques are implemented as follows:
- Using handler
- The sample uses the OnError event of FDQuery1. This event fires when an error happens while the dataset is communicating with a DBMS. The event checks if the
AException
parameter is an instance of EFDDBArrayExecuteError. Then, the sample uses the Offset and Action properties of EFDDBArrayExecuteError to fix the error.- Note: After the execution, the property RowsAffected of FDQuery1 shows the number of successful executions.
- Using loop
- The sample uses the Errors property of the EFDDBEngineException class to read TFDDBError objects, where each object corresponds to an error, warning, or message returned by a DBMS. This property is used in a loop in order to fix all the errors of the parameters array.
Uses
See Also
Samples
- FireDAC TFDQuery Async sample
- FireDAC TFDQuery Batch sample
- FireDAC TFDQuery Array DML sample