首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在WPF应用程序中实时查看数据库记录

问在WPF应用程序中实时查看数据库记录
EN

Stack Overflow用户
提问于 2012-05-20 19:36:41
回答 2查看 2K关注 0票数 2

免责声明:我必须使用microsoft数据库,并且我不能将我的应用程序连接到服务器来订阅任何服务。

我正在使用VB.net创建一个WPF应用程序。我正在基于access数据库的记录填充一个列表视图,当应用程序加载并填充数据集时,我会查询该数据库。然后,我使用向用户显示数据,具体取决于过滤器和诸如此类的内容。

但是..。access表在一天中被多次修改,这意味着如果用户不重新加载应用程序,那么随着时间的推移,用户将拥有“旧数据”。是否有方法将access数据库连接到VB.net应用程序,以便在数据库中添加、删除或修改记录时引发事件?我对事件处理程序中所需的任何代码都没有意见。我只需要想出一种从access表触发vb.net应用程序事件的方法。

把我想要做的事情想象为查看数据库表的实时编辑,但在应用程序中。任何帮助都是非常感谢的,如果你需要澄清的话,请告诉我--我只是需要一个总体方向,我很乐意做更多的研究。

我的解决方案是:

  • 为ms访问更改创建审核表
  • 在用户应用程序中创建单独的工作线程,以每60秒查询审核表中的更改。
  • 如果发现更改,它将修改受影响的数据集记录。
  • 在dataset记录更新中引发事件以刷新任何受影响的对象/属性
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-21 02:02:33

有几种方法可以做你想做的事,但是你在你的过程中基本上是正确的。

据我所知,没有从数据库驱动程序获取事件的直接方法,无法让您知道某些更改,因此轮询是唯一的解决方案。

  • I MS Access数据库是Access 2010 ACCDB数据库,您正在为其使用ACE驱动程序(如果应用程序运行的机器上没有安装Access ),您可以使用新的数据宏触发器自动记录对数据库中表的更改,以便根据需要记录更新、删除等新插入的审计表。 这种方法是最好的,因为这些方法发生在ACE数据库驱动程序级别,因此它们将尽可能高效和透明。
  • 如果您使用的是旧版本的Access,那么您必须自己实现审核。艾伦·布朗有一篇很好的文章。一点搜索也会带来其他解决办法。
  • 您还可以对需要监视的表运行一些查询。

在任何情况下,您都需要监视您的审计或数据表。

您可以根据数据库上的负载、客户端的数量等来监视更改的频率,这取决于数据库上的负载、客户端的数量等等,您可以轻松地检查几秒钟。

不过,我建议你:

  • 在应用程序运行时保持与数据库的永久连接:打开一个用于读取的虚拟表,并在关闭应用程序之前不要关闭它。这对任何人来说都没有性能代价,但它将确保只创建一次昂贵的锁文件,而不是针对您运行的每个查询。这可能会带来巨大的性能导入。有关原因的更多信息,请参见这篇文章。
  • 使您的审计表(或数据表)易于监视:包括一个时间戳列,该列记录记录创建和最后修改记录的时间。这使得检查更改非常快速和高效:您只需检查最近修改的记录日期是否与上次读取的日期匹配即可。 使用Access 2010,添加触发器很容易做到这一点。对于旧版本,您将需要在表单级别执行此操作。
票数 1
EN

Stack Overflow用户

发布于 2012-05-20 19:52:03

如果您正在使用Server,则为

直到SQL 2005,您可以使用通知服务。

自Server 2008 R2以来,它已被StreamInsight取代

其他数据库管理系统和备选方案

甲骨文

处理中间层中的更改并向客户端发送信号

或者民意测验。这要求您配置时间间隔,这样您就不会错过太长时间的更改。

(一般)

当服务器必须能够向客户端发送消息时,它需要对客户端保持通道/套接字打开,这可能会变得非常昂贵,因为有很多客户端。我建议不要推服务器,并尝试进行智能轮询。智能轮询意味着尽可能大的间隔,并在服务器上进行适当的缓存,以防止对相同数据多次访问数据库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10676557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档