コマンド パラメータの処理
コマンド オブジェクトの使用 への移動
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()