如何在c#

时间:2015-11-23 23:57:04

标签: c# asp.net .net sql-server

我一直在试图弄清楚如何从我的C#代码在数据库表上设置一个监听器。我最近一直在尝试设置一个SqlDependency,但我已经卡住了,因为我试图应用该过程的数据库是只读的,我没有权限更改(尚)。

有没有人知道其他方法来设置这样的东西?我的总体目标是允许我的应用程序监听数据库,并在有INSERT,UPDATE等时通知,并具体提供更改的内容(即哪一行)。

编辑:我无权访问插入/更新数据库的代码,我所拥有的只是对数据库本身的只读访问权。

1 个答案:

答案 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);
}