0

我的场景是我从一个 SQL Server 表中获取数据到 vb.net DataTable 中。

现在,如果任何记录被更改或新记录被保存到 SQL Server 表中,我只想将该记录获取或更新到我的数据表中。可能吗。

这是因为我的 SQL 表有超过 100 万条记录,每次获取所有记录几乎是不可能的。

实际上我打算从销售发票表中构建一个条形图,它会在每 1 分钟或固定时间间隔后刷新数据。

4

2 回答 2

0

您可以将时间戳字段添加到表中。将其设置为插入和更新时的当前时间,然后查询时间戳大于上次查询的最大时间戳的所有记录。

于 2012-04-16T14:02:21.993 回答
0

您可以将 SqlDependency 用于数据更改事件。这将确保发生对数据库中特定表的任何更改,将自动触发事件以反映程序中的更改。

  1. 在您的数据库中启用代理

    ALTER DATABASE [yourdbName] SET ENABLE_BROKER

  2. 通过 SqlCommand 在应用程序和数据库之间创建依赖关系。在建立之前,必须为此会话启动 SqlDependency。

    SqlDependency.Start(m_ConnectionString);

  3. 如前所述,依赖项是基于 SqlCommand 创建的。

    SqlDependency 依赖 = new SqlDependency(cmd);

    当然,对于此命令中可以包含的内容有一些限制。该命令必须使用两个部分名称,并且不能使用 *. 它显然也不能是 UPDATE 或 INSERT 语句。

以下将不起作用:

SELECT * FROM Message

这将起作用:

SELECT ID, Message FROM dbo.Message
  1. 如果查询不正确,将立即发送一个事件:

    SqlNotificationEventArgs.Info = 查询

    SqlNotificationEventArgs.Source = 声明

    SqlNotificationEventArgs.Type = 订阅

有关详细示例和演示应用程序,请参阅使用 SqlDependency 处理数据更改事件

于 2015-12-18T17:40:28.977 回答