0

私のシナリオは、1 つの SQL Server テーブルから vb.net DataTable にデータをフェッチすることです。

レコードが変更された場合、または新しいレコードが SQL Server テーブルに保存された場合、そのレコードのみをデータ テーブルにフェッチまたは更新します。出来ますか。

これは、SQL テーブルに 100 万を超えるレコードがあり、すべてのレコードを毎回取得することはほとんど不可能であるためです。

実際には、販売請求書テーブルから棒グラフを作成しようとしています.1分ごとにデータを更新するか、時間間隔を修正します.

4

2 に答える 2

0

タイムスタンプ フィールドをテーブルに追加できます。挿入および更新時に現在の時刻に設定し、最後のクエリからの最大のタイムスタンプよりも大きいタイムスタンプを持つすべてのレコードをクエリします。

于 2012-04-16T14:02:21.993 に答える
0

データ変更イベントには SqlDependency を使用できます。これにより、データベース内の特定のテーブルに対する変更が発生すると、自動的にイベントがトリガーされ、プログラムの変更が反映されます。

  1. データベースでブローカーを有効にする

    ALTER DATABASE [yourdbName] SET ENABLE_BROKER

  2. SqlCommand を介して、アプリケーションとデータベースの間に依存関係が作成されます。それを確立する前に、このセッションに対して SqlDependency を開始する必要があります。

    SqlDependency.Start(m_ConnectionString);

  3. 前述のように、依存関係は SqlCommand に基づいて作成されます。

    SqlDependency 依存関係 = 新しい SqlDependency(cmd);

    もちろん、このコマンドに含めることができるものに関しては、いくつかの制限があります。コマンドでは 2 つの部分名を使用する必要があり、* は使用できません。また、明らかに UPDATE または INSERT ステートメントであってはなりません。

以下は機能しません。

SELECT * FROM Message

これはうまくいきます:

SELECT ID, Message FROM dbo.Message
  1. クエリが正しくない場合、次のイベントがすぐに送信されます。

    SqlNotificationEventArgs.Info = クエリ

    SqlNotificationEventArgs.Source = ステートメント

    SqlNotificationEventArgs.Type = サブスクライブ

詳細な例とデモ アプリケーションについては、「データ変更イベントに SqlDependency を使用する」を参照してください。

于 2015-12-18T17:40:28.977 に答える