最近、親友のためにデータベース開発モジュールを書いているときに、データバッチ処理の問題に遭遇しました。
私はデータバッチ処理のためのいくつかの開発方法について考えました、そして私はあえて特別な要約を楽しんで、それをあなたと共有しません。
データベースアプリケーションシステムでは、多くの場合、Appending、削除、変更など、データがバッチされます。
このバッチ操作は、付録とコピーコマンドを使用してVFPなどの特別なデータベース開発ツールで対応するコマンドとともに運ばれます。
コマンド条項は簡単に完了できます。 ただし、他の開発ツールには同様のコマンドはありません。
代わりに、PowerBuilderなどの同様の機能を完了できるコントロールまたはオブジェクトを提供します
パイプライン(データパイプライン)を使用して、2つまたは等型または異なる構成テーブル間のデータバッチ処理を完了します。
この記事では、データベース開発にDelphiを使用する際のタイマーコンポーネントを使用して、バッチ処理の方法を紹介します。
Delphiの開発では、Delphiがデータベース開発に使用する場合、最も使用される方法はADOとBDEです。
そのため、BorlandはBDEコンポーネントで多くの経験を費やしたため、データバッチ処理を完了できるデータバッチ処理にはtbatchmoveコントロールがあります。
特定の操作は、tbatchmoveのモードプロパティを設定し、実行メソッドを呼び出すことで完了する必要があります。 BDEを手伝ってください。
この記事のさまざまな操作モードの実際の結果は、Delphiのデータベースデスクトップから見つけることができます
で閲覧。
これはこの記事の焦点ではないので、これについて詳しく説明しません。
この記事の焦点は、ADOのデータのバッチ処理方法です。
この問題が発生した場合、一般的な方法はすべてのデータを通過してループを挿入することです。
ただし、ここで話したいのは、高速で効率的で推奨されるバッチ処理方法です。
手順tform1.formcreate(sender:tobject);
var
MyPath:文字列;
const
myPassw = '****'; ///パスワード
始める
MyPath:= extractfilepath(paramstr(0));
adoconnection1.connectionString:= 'provider = microsoft.jet.oledb.4.0; data source ='+
MyPath+'db/db.mdb; jet oledb:データベースpassword ='+
mypassw+'; stave security info = false';
///////////データエンジンをセットアップしてパスワードをロードする
adoconnection1.loginprompt:= false;
adoconnection1.connected:= true;
adotable1.connection:= adoconnection1;
adotable1.tablename:= 'tab1';
adotable2.connection:= adoconnection1;
adotable2.tablename:= 'tab2';
試す
adotable2.open;
adotable1.open;
dataSource1.dataset:= adotable1;
dbgrid1.datasource:= dataSource1;
dbnavigator1.datasource:= dataSource1;
を除外する
messagebox(0、 'データベースを開くことはできません'、 'error'、mb_ok);
終わり;
////////////////タイマー制御制御ループ
始める
////////////////エラーコントロールを実行する不均一なテーブルのバッチデータ処理
dataSource2.dataset.insert;
adotable2.fields [0] .asstring:= adotable1.fields [0] .asstring;
adotable2.fields [1] .asstring:= adotable1.fields [1] .asstring;
dataSource1.dataset.next;
dataSource1.dataset.eof = true then themer1.enabled:= false;
dataSource1.dataset.eof = trueの場合、showmessage( 'データは正常にインポートされました!');
を除外する
MessageBox(0、 'データインポート障害'、 'エラー'、MB_OK);
終わり;
終わり;
DataModule2.DataSource1.Dataset.Next; /////////////////////この文は最も重要な、つまりループステートメントです。
レコード(タイマーの応答時間)を挿入する時間を設定できます。
これは、タイマーコンポーネントの特性によって設計された不均一なテーブル間のデータのバッチインポート関数です。dataset.next属性。
次に、削除、更新、その他の機能のために同様のコードを実装できます(DataSource属性を使用して変更します)。
クエリ関数があるため、開発にはタドキュリーコンポーネントを使用しますが、ほぼ同じ方法です。
著者:Viivd
電子メール:[email protected]
日付:2004.6.5