|
ADO のデフォルトのロック タイプは読み取り専用です。このロック タイプの変更は、レコードセットの Open 呼び出しでロック タイプ パラメーターを指定し、レコードセットにその変更を書き込むのに使用するメソッドを適用することによって変更できます。
レコードセットを更新するには、即時更新モード、単一行バッチ更新モード、または複数行バッチ更新モードのいずれかを使用するためにロック タイプを変更します。
Pervasive.SQL V8 より前の OLE DB プロバイダーではロック タイプに adLockPessimistic をサポートしていませんでした。ロック タイプを指定しない場合、Update メソッドは必要なく、更新はフィールド単位でデータ ストアに書き込まれます。この方法は効率が悪いので、その他のロック タイプが特定のアプリケーションで受け入れられないことが判明している場合以外は使用しないでください。
バッチ更新モードには、単一行と複数行があります。
ロック タイプに adLockOptimistic を使用した場合、変更の書き込みには Update メソッドを使用し、一度に 1 つのレコードを処理するコードを記述する必要があります。ADO をレコードセット内のほかの行で動作させるオペレーション、または現在行をリフレッシュさせるオペレーションはいずれも、ADO の暗黙的な Update 呼び出しをトリガーします。ただし、これは即時更新モードよりも非常に効率的です。以下に、即時更新モードを使用してレコードセットを開く例を示します。
rs.Open "Course", "Provider=PervasiveOLEDB;Data Source=Demodata", adOpenDynamic, adLockOptimistic, adCmdTableDirect
ロック タイプに adLockBatchOptimistic を使用した場合、変更の書き込みには UpdateBatch メソッド を使用し、一度に複数レコードの変更処理を行うコードを記述することができます。
これはパフォーマンスの点から見れば最良のロック タイプですが、アプリケーション設計で ADO が一度に複数行をキャッシュして更新できるようにする必要があります。このロック タイプが必ずしも、マルチユーザー、スループットの大きいアプリケーションに適しているとは限りません。以下に、バッチ更新モードを使用してレコードセットを開く例を示します。
rs.Open "Course", "Provider=PervasiveOLEDB;Data Source=Demodata", adOpenDynamic, adLockBatchOptimistic, adCmdTableDirect
|