2

Glassfishアプリサーバー上のサーブレットを介してMSSQLサーバーからデータをプルするJavaFXクライアントを含むシステムを構築しています。また、変更できないレガシーシステムからのVisualFoxProデータベースからのデータも消費します。JDataConnectライブラリを使用して、Glassfishサーバー上にJDBC接続を作成しています。これに対して、通常のSQLクエリを実行して必要なデータを取得できます。

私のjavafxクライアントには、データベースから取得したデータのObservableListsにバインドされた多くのテーブルビューが含まれています。MSSQLデータとFoxProデータのデータを組み合わせたテーブルが1つあります。FoxProデータは別のシステムから更新されます。クライアントがユーザーに提示するデータをスライスおよびダイシングする方法は多数あるため、この複合データの同期を維持しようとすることは禁止されています(不可能ではありませんが困難です)。MS SQL db内の関連するテーブルの列を、変更に応じてFoxProデータベースからの必要な値で更新する方が簡単です(クライアントの設計に適しています)。また、多くのクライアントがデータにアクセスするため、クライアントにデータベースの更新を試みさせるのは賢明ではありません。

では、foxproデータベースを監視し、必要な変更/データをSQLサーバーデータベースに書き込むGlassfishサーバーで実行されるアプリケーションを作成できますか?このタイプのソリューションの開発をどこから始めればよいのかわかりません。実際、これが専門家の提案です。何を検索すればいいのかわからない。完全に失われたことはそれを最もよく合計します。

ヘルプやアイデアをありがとう。

4

2 に答える 2

1

従来の FoxPro システムを変更できない場合がありますが、テーブルが VFP データベース コンテナー (DBC ファイルなど) に格納されている場合は、ストアド プロシージャ トリガー (挿入、更新、および/または削除) を VFP 内に書き込むことができる場合があります。データベース コンテナーを作成し、それらを SQL サーバー db に直接書き込むようにします。必要なもの:

  1. VFP データベース コンテナーへのアクセス
  2. SQL サーバー データベースへの接続文字列
  3. SQL Server テーブルにプッシュする VFP データの VFP ストアド プロシージャ トリガーを書き込む。

接続を整理したら、SQLEXEC() コマンドを使用して VFP ストアド プロシージャを記述できます。このコマンドは、「ステートメントが処理されるデータ ソースに SQL ステートメント」を送信します (VFP ヘルプより)。例えば

m.lnFileHandle = SQLSTRINGCONNECT(m.lcConnectString)
m.lcSQLCommand = "insert into elctablebk.dbo.t_bkcust (custidnum) values ('EdTest')"
m.lnRetVal = SQLEXEC(m.lnFileHandle, m.lcSQLCommand)

上記のコードは、サーバーへの接続から # ファイルハンドルを取得し、SQL INSERT コマンドで変数を作成し、SQLEXEC() コマンドを使用してサーバー上で SQL ステートメントを実行します。成功した場合、サーバー上のサンプル t_bkcust ファイルにレコードが挿入されます。

于 2012-10-09T04:32:01.977 に答える
0

では、FoxPro データベースを監視し、必要な変更/データを SQL サーバー データベースに書き込む、glassfish サーバー上で実行されるアプリケーションを作成できますか?

理想は、FoxPro データベースが変更をアプリケーションにプッシュできる場合です。FoxPro がデータベース変更のログを生成し、アプリケーションがこのログを読み取ることができる場合、これを行うことができます。私は FoxPro の専門家として、この方法が実現可能かどうかを判断するのに十分ではありません。

もう 1 つのプロセスは、アプリケーションが FoxPro データベースを定期的に読み取ることです。15分ごとに言ってください。次に、違いを見つけ出し、SQL Server データベースを更新するのはアプリケーション次第です。SQL Server データベースは、ポーリング間隔で常に FoxPro データベースより遅れています。アプリケーションのニーズを満たすには、FoxPro データベースを読み取る頻度を決定する必要があります。

于 2012-10-05T15:28:40.907 に答える