データベースを使ってキャッシュアップデートを適用する

提供: RAD Studio
移動先: 案内検索

BDE を使用した更新情報のキャッシュ:インデックス への移動

メモ: ボーランド データベース エンジン(BDE)は推奨されなくなったので、今後は機能強化されません。たとえば、BDE では Unicode はサポートされません。BDE を使用して新規に開発を始めないでください。既存のデータベース アプリケーションを BDE から dbExpress に移行することを検討してください。

キャッシュアップデートをデータベース接続のコンテキストで 1 つまたは複数のデータセットに適用するには、そのデータベースコンポーネントの ApplyUpdates メソッドを呼び出します。次のコードは、ボタンクリックイベントに応答して CustomersQuery データセットの更新を適用します。

procedure TForm1.ApplyButtonClick(Sender: TObject);
begin
  // Paradox,dBASE,FoxPro などのローカルデータベースでは
  // TransIsolation を tiDirtyRead に設定する
  if not (Database1.IsSQLBased) and not (Database1.TransIsolation = tiDirtyRead) then
    Database1.TransIsolation := tiDirtyRead;
  Database1.ApplyUpdates([CustomersQuery]);
end;
void __fastcall TForm1::ApplyButtonClick(TObject *Sender)
{
  // Paradox,dBASE,FoxPro などのローカルデータベースでは
  // TransIsolation を tiDirtyRead に設定する
  if (!Database1->IsSQLBased && Database1->TransIsolation != tiDirtyRead)
    Database1->TransIsolation = tiDirtyRead;
  Database1->ApplyUpdates(&CustomersQuery,0);
}

上記のシーケンスは、自動的に生成されたトランザクションのコンテキストで、キャッシュアップデートをデータベースに書き込みます。成功した場合、トランザクションのコミット、さらにキャッシュアップデートのコミットが続きます。失敗した場合、トランザクションはロールバックされ、アップデートキャッシュの内容は変更されません。後者の場合は、データセットの OnUpdateError イベントを通じてキャッシュアップデートエラーをアプリケーションで処理する必要があります。更新エラーの処理については、「キャッシュアップデートエラーの処理」を参照してください。

データベースコンポーネントの ApplyUpdates メソッドを呼び出すことの主な利点は、そのデータベースに関連するデータセットコンポーネントをいくつでも更新できることです。データベースの ApplyUpdates メソッドのパラメータは、TDBDataSet の配列です。たとえば、次のコードは 2 つの問い合わせの更新を適用します。

if not (Database1.IsSQLBased) and not (Database1.TransIsolation = tiDirtyRead) then
  Database1.TransIsolation := tiDirtyRead;
Database1.ApplyUpdates([CustomerQuery, OrdersQuery]);
TDBDataSet* ds[] = {CustomerQuery, OrdersQuery};
if (!Database1->IsSQLBased && Database1->TransIsolation != tiDirtyRead)
  Database1->TransIsolation = tiDirtyRead;
Database1->ApplyUpdates(ds,1);

関連項目