2010-09-25 44 views
2

我有一個DataGridView顯示來自MS Access數據庫的數據。我使用的是DataSetTableAdapterBindingSource將數據鏈接到DataGridView如何在C#WinForms中通知外部MS Access數據庫更新?

 tableAdapter = new AccountsTableAdapter(); 

     dataTable = new Accounts.AccountsDataTable(); 
     tableAdapter.Fill(dataTable); 

     tableBindingSource = new BindingSource(); 
     tableBindingSource.DataSource = dataTable; 

     dataGridView1.DataSource = tableBindingSource; 

我想知道我怎麼可以檢測或得到通知時,數據庫中的表會從我的應用程序外部修改 - 排更新,插入,從Access界面或從不同的應用程序在數據庫上執行的刪除。

另外,根據這個推測的通知,我該如何更新我的DataSet,以便只更新受影響的行 - >只接收新插入的行,修改過的行的受影響字段值和刪除索引。

所以,基本上,我試圖獲得的是一種同步我的數據庫表與DataGridView的方式。我已經設法將我修改或插入到DataGridView中的行保存到數據庫中,現在能夠執行此數據庫的相反側 - 視圖綁定會很好。

回答

3

我知道的唯一方法是輪詢數據庫。如果數據具有LastModified字段,則可以向數據庫發出請求以獲取更新的行,然後將結果合併到DataSet中。

例如,假設您從sql「SELECT * FROM Contact」填充表單。然後,每隔一分鐘左右,運行查詢「SELECT * FROM Contact WHERE LastModified> @LastFetched」,其中@LastFetched是上次獲得更新的時間。您需要從數據庫獲取@LastFetched的值,因爲客戶端計算機和數據庫服務器可能沒有將它們的時間同步到足夠近以便正常工作。

然後你只需要更新DataSet的更新。如果表單綁定正確,它應該自動更新。