我有一个显示MS Access数据库数据的DataGridView
。我正在使用DataSet
与TableAdapter
和BindingSource
将数据链接到DataGridView
:
tableAdapter = new AccountsTableAdapter();
dataTable = new Accounts.AccountsDataTable();
tableAdapter.Fill(dataTable);
tableBindingSource = new BindingSource();
tableBindingSource.DataSource = dataTable;
dataGridView1.DataSource = tableBindingSource;
我想知道如何从我的应用程序外部修改数据库表时检测或获得通知 - 从Access界面或其他应用程序对数据库执行的行更新,插入,删除。
此外,根据此假定通知,我如何更新我的DataSet,以便只更新受影响的行 - >仅接收新插入的行,已修改的行的受影响的字段值以及已删除的索引。
所以,基本上,我想要获得的是一种将数据库表与DataGridView
同步的方法。我已经设法将我在DataGridView
中修改或插入的行保存到数据库中,现在能够执行此数据库的倒数侧是很好的 - 查看绑定。
答案 0 :(得分:3)
我所知道的唯一方法是轮询数据库。如果数据具有LastModified字段,则可以向数据库发出请求以获取更新的行,然后将结果合并到DataSet中。
例如,假设您从sql“SELECT * FROM Contact”填充表单。然后每分钟左右,运行查询“SELECT * FROM Contact WHERE LastModified> @LastFetched”,其中@LastFetched是您上次获得更新的时间。您将希望从数据库中获取@LastFetched的值,因为客户端计算机和数据库服务器可能没有将它们的时间同步到足够接近以便正常工作。
然后您只需要使用更新来更新DataSet。如果表单绑定正确,则应自动更新。