データベースを使用したキャッシュ アップデートの適用
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);