コマンド パラメータの処理

提供: RAD Studio
移動先: 案内検索

コマンド オブジェクトの使用 への移動


TADOCommand オブジェクトでパラメータを使用する方法は 2 とおりあります。

  • CommandText プロパティに、パラメータを含むクエリを指定する。TADOCommand でパラメータ化されたクエリを使用する方法は、ADO データセットでパラメータ化されたクエリを使用する方法と同様です。
  • CommandText プロパティに、パラメータを使用するストアド プロシージャを指定する。ストアド プロシージャ パラメータの使用方法は、TADOCommand と ADO データセットでほとんど同じです。

TADOCommand 使用時にパラメータ値を指定する方法は、Execute メソッドを呼び出すときに指定する方法と、Parameters プロパティを使用して事前に指定しておく方法の 2 とおりがあります。

Execute メソッドには、複数のパラメータ値を Variant 配列として受け取るオーバーロード メソッドがあります。このメソッドは、Parameters プロパティのセットアップに伴うオーバーヘッドがないため、パラメータ値をすばやく指定する場合に便利です。

ADOCommand1.Execute(VarArrayOf([Edit1.Text, Date]));
Variant Values[2];
Values[0] = Edit1->Text;
Values[1] = Date();
ADOCommand1.Execute(VarArrayOf(Values,1));

出力パラメータを返すストアド プロシージャの場合は、上記の方法ではなく、Parameters プロパティを使用する必要があります。出力パラメータを読み取る必要がない場合でも、Parameters プロパティを使用した方がよい場合があります。このプロパティを使用すると、設計時にパラメータを指定することができ、データセットのパラメータと同じように TADOCommand のプロパティを扱うことができるためです。

CommandText プロパティを設定すると、クエリ内のパラメータやストアド プロシージャで使われるパラメータに合わせて、Parameters プロパティが自動的に更新されます。設計時には、[オブジェクト インスペクタ]Parameters プロパティの参照([...])ボタンをクリックすると、パラメータ エディタでパラメータを編集できます。実行時には、TParameter のプロパティやメソッドを使用して、各パラメータの値を設定(または取得)することができます。

with ADOCommand1 do begin
  CommandText := 'INSERT INTO Talley ' +
    '(Counter) ' +
    'VALUES (:NewValueParam)';
  CommandType := cmdText;
  Parameters.ParamByName("NewValueParam").Value := 57;
  Execute
end;
ADOCommand1->CommandText = "INSERT INTO Talley ";
ADOCommand1->CommandText += "(Counter) ";
ADOCommand1->CommandText += "VALUES (:NewValueParam)";
ADOCommand1->CommandType = cmdText;
ADOCommand1->Parameters->ParamByName("NewValueParam")->Value = 57;
ADOCommand1->Execute()

関連項目