実行時でのパラメータ値の指定
クエリでのパラメータの使用 への移動
実行時にパラメータを作成するには、次のものを使用できます。
- ParamByName メソッド -- パラメータ名に基づいて、パラメータに値を割り当てることができます(TADOQuery の場合は使用不可)。
- Params プロパティまたは Parameters プロパティ -- SQL 文内でのパラメータの順序に基づいて、パラメータに値を割り当てることができます。
- Params.ParamValues プロパティまたは Parameters.ParamValues プロパティ -- 各パラメータ セットの名前に基づいて、単一コマンド ライン内の 1 つ以上のパラメータに値を割り当てることができます。
次のコードでは、ParamByName を使用して、編集ボックス内のテキストを :Capital パラメータに割り当てています。
SQLQuery1.ParamByName('Capital').AsString := Edit1.Text;
SQLQuery1->ParamByName("Capital")->AsString = Edit1->Text;
同じコードを Params プロパティとインデックス 0 を使って書き直すと、次のようになります(:Capital パラメータが SQL 文の先頭パラメータであると仮定します)。
SQLQuery1.Params[0].AsString := Edit1.Text;
SQLQuery1->Params->Items[0]->AsString = Edit1->Text;
次のコードでは、Params.ParamValues プロパティを使って、3 つのパラメータを一度に設定しています。
Query1.Params.ParamValues['Name;Capital;Continent'] := VarArrayOf([Edit1.Text, Edit2.Text, Edit3.Text]);
Query1->Params->ParamValues["Name;Capital;Continent"] = VarArrayOf(OPENARRAY(Variant, (Edit1->Text, Edit2->Text, Edit3->Text)));
上記で、値をキャストしなくてもよいように ParamValues でバリアントが使用されている点に注意してください。