2015-10-05 21 views
1

我在C#代码中使用SqlDependency来在数据库中某一行中的特定列值发生更改时提醒我的应用程序。我可以使用内联SQL来实现它。使用存储过程的SQL依赖关系

我想用存储过程替换它,但由于某些原因代码没有执行存储过程。我正在粘贴来自我的应用程序的几行代码。请让我知道如何修改它,以便我可以使用过程调用替换内联SQL以实现相同。

var con = new SqlConnection(ConnectionString); 
SqlDependency.Stop(con.ConnectionString); 
SqlDependency.Start(con.ConnectionString); 

var connection = new SqlConnection(con.ConnectionString); 
connection.Open(); 

try 
{ 
    using (var command = new SqlCommand("inlinesql", connection)) 
    { 
     var dependency = new SqlDependency(command); 
     dependency.OnChange += new OnChangeEventHandler(OnDependencyChange); 

     using (SqlDataReader rdr = command.ExecuteReader()) 
     { 
      try 
      { 
       if (rdr.HasRows) 
       { 
        _autoEvent.WaitOne(); 
       } 
       else 
       { 
        continue; 
       } 
      } 
      finally 
      { 
       rdr.Close(); 
      } 
     } 
    } 
} 
finally 
{ 
    connection.Close(); 
    SqlDependency.Stop(con.ConnectionString); 
} 

void OnDependencyChange(object sender, SqlNotificationEventArgs e) 
{ 
    dosomething(); 
} 
+0

以下答案是否适合您?如果是这样,请标记为答案。谢谢! – ragerory

回答

1

以上var dependency...地说:

command.CommandType = CommandType.StoredProcedure; 

并与存储过程的名称替换inlinesql