データベースを使用したキャッシュ アップデートの適用

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

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


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

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

Delphi:

procedure TForm1.ApplyButtonClick(Sender: TObject);
begin
  // for local databases such as Paradox, dBASE, and FoxPro
  // set TransIsolation to DirtyRead
  if not (Database1.IsSQLBased) and not (Database1.TransIsolation = tiDirtyRead) then
    Database1.TransIsolation := tiDirtyRead;
  Database1.ApplyUpdates([CustomersQuery]);
end;

C++:

void __fastcall TForm1::ApplyButtonClick(TObject *Sender)
{
  // for local databases such as Paradox, dBASE, and FoxPro
  // set TransIsolation to DirtyRead
  if (!Database1->IsSQLBased && Database1->TransIsolation != tiDirtyRead)
    Database1->TransIsolation = tiDirtyRead;
  Database1->ApplyUpdates(&CustomersQuery,0);
}

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

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

Delphi:

if not (Database1.IsSQLBased) and not (Database1.TransIsolation = tiDirtyRead) then
  Database1.TransIsolation := tiDirtyRead;
Database1.ApplyUpdates([CustomerQuery, OrdersQuery]);

C++:

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

関連項目