FireDacのTFDScriptコンポーネントでファイルに記載したSQL文を実行する方法を紹介します。
ファイルに記載したSQL文を実行する
TFDScriptのExecuteFileメソッドはファイルに記載されたSQLを実行します。
FDScript1.ExecuteFile(ファイル名);
例
C:\data\sample.sql
CREATE TABLE BOOKS(ID INTEGER PRIMARY KEY, NAME TEXT);
INSERT INTO BOOKS(ID, NAME) VALUES(1, 'Delphi 2009 handbook―Delphi最新プログラミングエッセンス');
INSERT INTO BOOKS(ID, NAME) VALUES(2, 'Delphi XE2プログラミング入門');
INSERT INTO BOOKS(ID, NAME) VALUES(3, 'Delphiでかんたん iOSアプリプログラミング');
ファイルに記載されたSQLを実行する
FDScript1.ExecuteFile('C:\data\sample.sql');
スクリプトの引数を使用する
TFDScriptのExecuteFileメソッドは、2番目の引数にスクリプトの引数をとります。
スクリプトの引数は文字列の配列です。
FDScript1.ExecuteFile(ファイル名, スクリプトの引数);
SQL文の中の「&位置番号」が引数に置き換えられます。
例
C:\data\sample.sql
CREATE TABLE &1(ID INTEGER PRIMARY KEY, NAME TEXT);
INSERT INTO &1(ID, NAME) VALUES(1, '&2');
INSERT INTO &1(ID, NAME) VALUES(2, '&3');
INSERT INTO &1(ID, NAME) VALUES(3, '&4');
ファイルに記載されたSQLを実行する
FDScript1.ExecuteFile('C:\data\sample.sql',
[ 'BOOKS',
'Delphi 2009 handbook―Delphi最新プログラミングエッセンス',
'Delphi XE2プログラミング入門',
'Delphiでかんたん iOSアプリプログラミング']);
エラーを捕捉する
SQLスクリプトを実行したときにエラーが発生すると、OnErrorイベントが発生します。
procedure TForm1.FDScript1Error(ASender: TObject;
const AInitiator: IFDStanObject; var AException: Exception);
begin
//エラーが発生したときはエラーメッセージを表示する
ShowMessage(AException.Message);
end;
発生したエラーの数を取得する
TotalErrorsプロパティで、発生したエラーの数を取得できます。
FDConnection1.StartTransaction;
try
FDScript1.ExecuteFile('C:\data\sample.sql');
finally
if FDScript1.TotalErrors > 0 then
FDConnection1.Rollback
else
FDConnection1.Commit;
end;
SQLスクリプト実行の進行状況が表示する
TFDGUIxScriptDialogを使用すると、SQLスクリプト実行の進行状況が表示できます。
フォームにTFDGUIxScriptDialogコンポーネントを配置し、TFDScriptコンポーネントのScriptDialogプロパティを設定します。
FDScript1.ScriptDialog := FDGUIxScriptDialog1;