不确定这是可能的。目前,为了检测在 SQL Server 中的表中添加了一行,我使用计时器来查询表。当添加一行时, SQL Server(可能是通过 ADO.NETSqlConnection
对象)是否可以在 Visual Basic 中引发事件,所以我不需要继续轮询/查询数据库?
问问题
5400 次
3 回答
1
您可以向表中添加一个触发器,该触发器在发生更新时调用您的应用程序。但我想轮询会比从数据库中调用你的应用程序更干净。只需保持较小的请求,如果有更改加载您需要的完整数据。
于 2013-05-09T02:54:04.920 回答
1
您始终可以将触发器添加到表中,然后从那里调用 webservice。如果要添加大量数据,我建议保留您当前的方法并定期调用数据库。
您可以随时添加“项目未处理”表。插入某些内容时在此表中添加一个项目,然后查询此表(它将更小)。
还有关于如何从 SQL 调用 .net dll的教程,但我不知道如何建议它。
于 2013-05-09T02:57:39.950 回答
1
如果您使用的是 SQL Server 2005+,则可以使用Service Broker和Query 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 回答