[英]Invalid object name when starting the sql dependency
這是我的代碼
SqlDependency.Start(GetConnectionString(), getQuery());
其中getQuery()
是:
private string getQuery() {
return "SELECT firstName, lastName FROM dbo.Customer";
}
我有這個例外:
Invalid object name 'SELECT firstName, lastName FROM dbo.Customer'.
private string getQuery() {
return "SELECT firstName, lastName FROM dbo.Customer";
}
public void Initialization()
{
// Create a dependency connection.
SqlDependency.Start(GetConnectionString(), getQuery());
}
public void SomeMethod()
{
// Assume connection is an open SqlConnection.
// Create a new SqlCommand object.
using (SqlCommand command = new SqlCommand(
getQuery(),
new SqlConnection(GetConnectionString())))
{
// Create a dependency and associate it with the SqlCommand.
SqlDependency dependency = new SqlDependency(command);
// Maintain the refence 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.
}
}
}
然后從外面,我這樣做:
printing p = new printing();
p.Initialization();
p.SomeMethod();
您正在使用SqlDependency.Start(string, string)
重載,其中第二個字符串表示隊列名稱。 'SELECT firstName, lastName FROM dbo.Customer'
不是有效的隊列名稱。
您需要為查詢創建一個SqlCommand並將其注入到構造函數中 :
var dependencyCommand = new SqlCommand();
dependencyCommand.CommandText = getQuery();
sqlDependency = new SqlDependency(dependencyCommand);
sqlDependency.Start(GetConnectionString());
至於編輯,您已經完成了。 只需刪除SqlDependency.Start()
的第二個參數即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.