手順 3: コマンドの実行 (ADO チュートリアル)
ここでは、次の操作のうちの太字の部分を行います。
-
データ ソースに接続します。
-
必要に応じて、SQL クエリ コマンドを表すオブジェクトを作成します。
-
必要に応じて、SQL コマンド内に変数パラメータとして値を指定します。
-
コマンドを実行します。行を返すコマンドの場合は、ストレージ オブジェクトに行を格納します。
-
必要に応じて、データの移動、調査、操作、および編集を行います。
-
適切であれば、ストレージ オブジェクトにある変更でデータ ソースを更新します。必要に応じて、トランザクションに更新内容を埋め込みます。
-
トランザクションが使用された場合は、そのトランザクション中に行われた変更を受け入れるか、または破棄します。トランザクションを終了します。
説明
Recordset を返すメソッドは、Connection.Execute、Command.Execute、および Recordset.Open の 3 種類です。Visual Basic でのこれらのメソッドの構文を次に示します。
connection.Execute(CommandText, RecordsAffected, Options)
command.Execute(RecordsAffected, Parameters, Options)
recordset.Open Source, ActiveConnection, CursorType, LockType, Options
これらのメソッドは、特定のオブジェクトの長所を利用できるよう最適化されています。
コマンドを発行する前に、暗黙的に、または明示的に接続を開いておく必要があります。コマンドを発行する各メソッドは、それぞれ異なった接続を表しています。
-
Connection.Execute メソッドでは、Connection オブジェクト自身の内部に組み込まれた接続を使います。
-
Command.Execute メソッドでは、ActiveConnection プロパティに設定された Connection オブジェクトを使います。
-
Recordset.Open メソッドでは、接続文字列、ActiveConnection パラメータ、または ActiveConnection プロパティに設定された Connection オブジェクトを使います。
また、この 3 つのメソッドではコマンドの指定方法も異なります。
-
Connection.Execute メソッドでは、コマンドはコマンド テキストです。
-
Command.Execute メソッドではコマンドは表示されず、Command.CommandText プロパティに指定されています。さらに、コマンドをパラメータ化することができます。
-
Recordset.Open メソッドでは、コマンドは Source 引数です。この引数をコマンド テキストまたは Command オブジェクトにすることができます (Source 引数を、テーブル名、ストアド プロシージャ、または永続的な Recordset のファイル名を指す文字列にすることもできます)。
それぞれのメソッドは、機能とパフォーマンスにおいて一長一短があります。
-
Execute メソッドは、データを返さないコマンドを実行することを目的にしていますが、それだけに限定されてはいません。
-
どちらの Execute メソッドも読み取り専用、前方スクロールのみ可能な Recordset オブジェクトを返します。
-
Command.Execute メソッドでは、効率的に再使用できるパラメータ化コマンドを使用できます。
-
Open メソッドでは CursorType (データのアクセスに使用するストラテジとオブジェクト) と LockType (ほかのユーザーからの "隔離" の程度を指定し、カーソルが "即時モード" または "バッチ モード" (後で詳しく説明) での更新をサポートするかどうか) を指定できます。
これらのオプションを習得してください。Recordset の機能の多くが組み込まれています。特に重要なことは、Microsoft Cursor Service for OLE DB を使用するかどうかの判断です。この実装方法の詳細については、「Microsoft Cursor Service for OLE DB」を参照してください。
このチュートリアルでは、バッチ モードで Recordset を変更します。したがって、adLockBatchOptimistic の LockType が指定されます。バッチ処理には Cursor Service が必要なので、CursorLocation プロパティが adUseClient に設定されます。開いている接続に Command オブジェクトが既に設定されているので、ActiveConnection パラメータを Open メソッドに指定することはできません。
Recordset が宣言され、次のように使用されます。
Dim rs As New ADODB.Recordset
rst.CursorLocation = adUseClient
rst.Open cmd, , adOpenStatic, adLockBatchOptimistic
次へ 手順 4: データの操作