我一直在试图弄清楚如何从我的C#代码在数据库表上设置一个监听器。我最近一直在尝试设置一个SqlDependency
,但我已经卡住了,因为我试图应用该过程的数据库是只读的,我没有权限更改(尚)。
有没有人知道其他方法来设置这样的东西?我的总体目标是允许我的应用程序监听数据库,并在有INSERT,UPDATE等时通知,并具体提供更改的内容(即哪一行)。
编辑:我无权访问插入/更新数据库的代码,我所拥有的只是对数据库本身的只读访问权。
答案 0 :(得分:0)
您将要设置一个SqlDependency
并订阅OnChangeEventHandler
。参见example from docs.microsoft.com:
void Initialization()
{
// Create a dependency connection.
SqlDependency.Start(connectionString, queueName);
}
void SomeMethod()
{
// Assume connection is an open SqlConnection.
// Create a new SqlCommand object.
using (SqlCommand command=new SqlCommand(
"SELECT ShipperID, CompanyName, Phone FROM dbo.Shippers",
connection))
{
// Create a dependency and associate it with the SqlCommand.
SqlDependency dependency=new SqlDependency(command);
// Maintain the reference in a class member.
// Subscribe to the SqlDependency event.
dependency.OnChange+=new
OnChangeEventHandler(OnDependencyChange);
// Execute the command.
using (SqlDataReader reader = command.ExecuteReader())
{
// Process the DataReader.
}
}
}
// Handler method
void OnDependencyChange(object sender,
SqlNotificationEventArgs e )
{
// Handle the event (for example, invalidate this cache entry).
}
void Termination()
{
// Release the dependency.
SqlDependency.Stop(connectionString, queueName);
}