FireDACの配列DMLでデータを一括登録する

配列DMLを使うと、DBMS間の通信量を減らしてSQLを効率よく実行できます。
AccessやSQLiteなど配列DMLをサポートしていないDBMSを使っている場合はFireDACが配列DMLの実行をエミュレートするので、使用するDBMSを意識する必要はありません。

配列DMLを使うには、最初にParamsプロパティのArraySizeに配列のサイズを設定します。

FDQuery1.SQL.Text := 'insert into TBL1(F1, F2, F3) values (:F1, :F2, :F3)';
FDQuery1.Params.ArraySize := 3; // 3行登録する

登録するデータをパラメータに割り当てます。

// 1行目
FDQuery1.ParamByName('F1').AsIntegers[0] := 10;
FDQuery1.ParamByName('F2').AsStrings[0] := 'Delphi';
FDQuery1.ParamByName('F3').AsStrings[0] := 'Object Pascal';
// 2行目
FDQuery1.ParamByName('F1').AsIntegers[1] := 11;
FDQuery1.ParamByName('F2').AsStrings[1] := 'C++Builder';
FDQuery1.ParamByName('F3').AsStrings[1] := 'C++';
// 3行目
FDQuery1.ParamByName('F1').AsIntegers[2] := 12;
FDQuery1.ParamByName('F2').AsStrings[2] := 'RAD Studio';
FDQuery1.ParamByName('F3').AsStrings[2] := 'Delphi/C++';

Executeメソッドを呼び出して実行します。
Executeメソッドの1番目の引数には配列のサイズ、2番目の引数には配列DMLコマンド開始インデックスを指定します。

FDQuery1.Execute(FDQuery1.Params.ArraySize, 0);

これで3行を一括登録できました。

コメントを残す

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

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