2012-04-16 63 views
0

我的情況是,我已經從一個SQL Server表中提取數據到vb.net DataTable。在VB.Net中更新數據集由於表中更改SQL Server

現在,如果有任何記錄被更改或新記錄被保存到SQL Server表我想獲取或更新只有該記錄到我的數據表。可能嗎。

這是因爲我的SQL表有超過100萬條記錄,每次讀取所有記錄幾乎是不可能的。

其實我打算從銷售發票表中建立一個條形圖,它會在每隔1分鐘或修復時間間隔後刷新數據。

+0

您可以選擇記錄計數,如果從數據表不同。計數,只選擇最新的記錄。 – 2012-04-16 12:32:14

+0

你的'DataTable'中有100萬行嗎? – 2012-04-16 12:32:36

+0

@TimSchmelter這將只返回新的記錄,不會識別修改過的記錄。 – 2012-04-16 14:03:09

回答

0

您可以將時間戳字段添加到您的表中。在插入和更新時將其設置爲當前時間,然後查詢時間戳大於最後一個查詢中最大時間戳的所有記錄。

+0

謝謝你這是一個很好的把戲,並幫助我解決我的問題 – 2012-04-28 10:12:25

+0

@asifayub高興地幫助。如果有幫助請接受答案。 – 2012-04-28 10:58:28

0

您可以使用SqlDependency進行數據更改事件。這將確保對數據庫中的特定表進行的任何更改都會自動觸發事件以反映程序中的更改。

  1. 在databasest

    ALTER DATABASE [yourdbName] SET ENABLE_BROKER

  2. 經由一個SqlCommand的應用程序和數據庫之間建立依賴關係使能代理。在此之前,必須爲此會話啓動SqlDependency。

    SqlDependency.Start(m_ConnectionString);

  3. 如前所述,依賴是基於SqlCommand創建的。

    SqlDependency dependency = new SqlDependency(cmd);

    當然,對於這個命令中可以包含什麼有一些限制。該命令必須使用兩個部分名稱,而不是使用*。它也必須顯然不是UPDATE或INSERT語句。

下面將不起作用:

SELECT * FROM Message 

這將工作:

SELECT ID, Message FROM dbo.Message 
  • 如果查詢不正確,一個事件將立即發送:

    SqlNotificationEventArgs.Info =查詢

    SqlNotificationEventArgs.Source =聲明

    SqlNotificationEventArgs.Type =訂閱

  • 對於具體例子,演示應用程序中看到Using SqlDependency for data change events