代码之家  ›  专栏  ›  技术社区  ›  luvieere

如何在c_winforms中获得外部MS Access数据库更新的通知?

  •  2
  • luvieere  · 技术社区  · 14 年前

    我有一个 DataGridView 显示MS Access数据库中的数据。我用的是 DataSet 用一个 TableAdapter 和A BindingSource 将数据链接到 数据表格控件 :

            tableAdapter = new AccountsTableAdapter();
    
            dataTable = new Accounts.AccountsDataTable();
            tableAdapter.Fill(dataTable);
    
            tableBindingSource = new BindingSource();
            tableBindingSource.DataSource = dataTable;
    
            dataGridView1.DataSource = tableBindingSource;
    

    我想知道当数据库表从我的应用程序外部被修改时,我如何检测或得到通知-行更新,插入,从访问接口或其他应用程序在数据库上执行的删除。

    此外,根据此假定通知,我如何更新我的数据集,以便只更新受影响的行->只接收新插入的行、已修改行的受影响字段值以及已删除行的索引。

    所以,基本上,我试图获得的是一种将数据库表与 数据表格控件 . 我已经设法将修改或插入的行保存到数据库 数据表格控件 ,现在能够执行这个数据库视图绑定的对等端就更好了。

    1 回复  |  直到 14 年前
        1
  •  3
  •   skolima    14 年前

    我知道的唯一方法是轮询数据库。如果数据具有lastmodified字段,则可以请求数据库获取更新的行,然后将结果合并到数据集中。

    例如,假设您从SQL“select*from contact”填充表单。然后,每隔一分钟左右运行查询“select*from contact where lastmodified>@lastfetched”,其中@lastfetched是您上次获取更新的时间。您将希望从数据库中获取@lastfetched的值,因为客户机和数据库服务器可能没有足够的时间同步,无法正常工作。

    然后您只需要用更新来更新数据集。如果表单绑定正确,则应自动更新。