2015-10-05 52 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