Command オブジェクト (ADO)

データ ソースに対して実行する特定のコマンドを定義します。

注釈

Command オブジェクトを使って、データベースのクエリを実行して Recordset オブジェクトのレコードを返す、一括操作を実行する、またはデータベースの構造を操作することができます。 プロバイダーの機能によっては、参照時に一部の Command コレクション、メソッド、またはプロパティからエラーが生成されることがあります。

Command オブジェクトのコレクション、メソッド、プロパティを使用すると、次のことができます。

  • CommandText プロパティを使って、コマンドの実行可能テキスト (たとえば SQL ステートメント) を定義します。 または、単純な文字列ではないコマンドまたはクエリ構造 (たとえば XML テンプレート クエリ) の場合は、CommandStream プロパティを使ってコマンドを定義します。

  • 必要に応じて、Dialect プロパティを使って、CommandText または CommandStream に使うコマンドの方言を指定します。

  • Parameter オブジェクトと Parameters コレクションを使って、パラメーター化されたクエリまたはストアド プロシージャの引数を定義します。

  • NamedParameters プロパティを使って、パラメーター名をプロバイダーに渡す必要があるかどうかを指定します。

  • コマンドを実行し、必要に応じて Execute メソッドを使って Recordset オブジェクトを返します。

  • 実行前に CommandType プロパティを使ってコマンドの型を指定し、パフォーマンスを最適化します。

  • Prepared プロパティを使って、プロバイダーが実行前に準備済み (またはコンパイル済み) バージョンのコマンドを保存するかどうかを制御します。

  • CommandTimeout プロパティを使って、プロバイダーがコマンドの実行を待機する秒数を設定します。

  • Command オブジェクトの ActiveConnection プロパティを設定して、開いている接続を関連付けます。

  • Name プロパティを設定して、関連付けられている Connection オブジェクトのメソッドとして Command オブジェクトを指定します。

  • RecordsetSource プロパティに Command オブジェクトを渡して、データを取得します。

  • Properties コレクションを使ってプロバイダー固有の属性にアクセスします。

注意

Command オブジェクトを使わずにクエリを実行するには、Connection オブジェクトの Execute メソッドまたは Recordsetオブジェクトの Open メソッドにクエリ文字列を渡します。 ただし、コマンド テキストを保持して再実行する場合、またはクエリ パラメーターを使用する場合は、Command オブジェクトが必要です。

以前に定義した Connection オブジェクトとは別に Command オブジェクトを作成するには、その ActiveConnection プロパティを有効な接続文字列に設定します。 それでも ADO によって Connection オブジェクトは作成されますが、そのオブジェクトはオブジェクト変数に割り当てられません。 ただし、複数の Command オブジェクトを同じ接続に関連付ける場合、明示的に Connection オブジェクトを作成して開く必要があります。これにより、Connection オブジェクトはオブジェクト変数に割り当てられます。 Connection オブジェクトが正常に開かれたことを確認してから、Command オブジェクトの ActiveConnection プロパティに割り当てます。これは、閉じた Connection オブジェクトを割り当てると、エラーが発生するからです。 Command オブジェクトの ActiveConnection プロパティをこのオブジェクト変数に設定しない場合、同じ接続文字列を使っていても、ADO により、各 Command オブジェクトに対して新しい Connection オブジェクトが作成されます。

Command を実行するには、関連付けられた Connection オブジェクトに対して Name プロパティを指定して呼び出します。 CommandActiveConnection プロパティは Connection オブジェクトに設定する必要があります。 Command にパラメーターがある場合は、その値をメソッドの引数として渡します。

同じ接続上で複数の Command オブジェクトを実行しており、いずれかの Command オブジェクトが、出力パラメーターを指定されたストアド プロシージャである場合、エラーが発生します。 各 Command オブジェクトを実行するには、個別の接続を使うか、他のすべての Command オブジェクトを接続から切断します。

Parameters コレクションは、Command オブジェクトの既定のメンバーです。 結果として、次の 2 つのコード ステートメントは同じになります。

objCmd.Parameters.Item(0)  
objCmd(0)  
  • Command オブジェクトでのスクリプト作成は安全ではありません。

このセクションでは、次のトピックを扱います。

参照

Connection オブジェクト (ADO)
Parameters コレクション (ADO)
Properties コレクション (ADO)
付録 A: プロバイダー