0

不确定这是可能的。目前,为了检测在 SQL Server 中的表中添加了一行,我使用计时器来查询表。当添加一行时, SQL Server(可能是通过 ADO.NETSqlConnection对象)是否可以在 Visual Basic 中引发事件,所以我不需要继续轮询/查询数据库?

4

3 回答 3

1

您可以向表中添加一个触发器,该触发器在发生更新时调用您的应用程序。但我想轮询会比从数据库中调用你的应用程序更干净。只需保持较小的请求,如果有更改加载您需要的完整数据。

于 2013-05-09T02:54:04.920 回答
1

您始终可以将触发器添加到表中,然后从那里调用 webservice。如果要添加大量数据,我建议保留您当前的方法并定期调用数据库。

您可以随时添加“项目未处理”表。插入某些内容时在此表中添加一个项目,然后查询此表(它将更小)。

还有关于如何从 SQL 调用 .net dll的教程,但我不知道如何建议它。

于 2013-05-09T02:57:39.950 回答
1

如果您使用的是 SQL Server 2005+,则可以使用Service BrokerQuery Notifications。设置有点复杂。简而言之,您使用SqlDependency Class
首先必须创建依赖项

System.Data.SqlClient.SqlDependency.Start(CS)

然后就可以使用了

Dim Cmd As New SqlCommand(SQLQuery, cn)
cmd.CommandText = "select field from dbo.MyTable"

sqlD = New SqlDependency(Cmd) 

cn.Open()
Dim tbl As New DataTable
tbl.Load(Cmd.ExecuteReader)

AddHandler sqlD.OnChange, AddressOf TableChanged

许多客户端不应使用依赖项,并且有严格的规则(为通知创建查询)应该如何编写查询。

于 2013-05-09T11:39:49.593 回答