更新VB.Net中的DataSet在SQL Server中更改表

时间:2012-04-16 12:25:45

标签: sql-server vb.net

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

现在,如果更改了任何记录或将新记录保存到SQL Server表中,我想仅将该记录提取或更新到我的数据表中。是否可能。

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

    ALTER DATABASE [yourdbName] SET ENABLE_BROKER

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

    SqlDependency.Start(m_ConnectionString);

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

    SqlDependency依赖项= new SqlDependency(cmd);

    当然,对于此命令中可包含的内容,存在一些限制。该命令必须使用两个部件名称而不使用*。它也必须显然不是UPDATE或INSERT语句。

  4. 以下内容不起作用:

    SELECT * FROM Message
    

    这将有效:

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

      SqlNotificationEventArgs.Info =查询

      SqlNotificationEventArgs.Source = Statement

      SqlNotificationEventArgs.Type =订阅

    2. 有关详细示例和演示应用程序,请参阅Using SqlDependency for data change events