FireDacのTFDScriptコンポーネントでファイルに記載したSQL文を実行する

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

フォームにTFDGUIxScriptDialogコンポーネントを配置し、TFDScriptコンポーネントのScriptDialogプロパティを設定します。

FDScript1.ScriptDialog := FDGUIxScriptDialog1;

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください