2015-02-25 2 views
0

Я пытаюсь использовать SQL зависимость, и я попытался с созданием соединения с squery, это очень простой код:SQL зависимость Недопустимое имя объекта "

public MyListener() 
     { 
      string query = "SELECT * FROM TransferToSIP WHERE hasBeenRead = false"; 
      SqlDependency.Start(getConnectionString(), query); 
     } 

То есть конструктор. я называю это так:

new MyListener(); 

, но я получил это исключение:

An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll 

Additional information: Invalid object name 'SELECT * FROM TransferToSIP WHERE hasBeenRead = false'. 

Там нет никакой ошибки на все во имя базы данных или имя поля.

что я делаю неправильно, пожалуйста?

+3

Я не думаю, что есть такая вещь, как значение «ложь». Я думаю, что вы имеете в виду '0' (предполагая столбец типа' bit'). – Caramiriel

+0

@Caramiriel no no, я уже пробовал '0', то же исключение –

+0

@Caramiriel да поле бит, но когда я попробовал' 0', я получил то же исключение –

ответ

1

Попробуйте указать имя очереди вместо запроса или даже без очереди.

Пример можно найти на справочной странице: https://msdn.microsoft.com/en-us/library/62xk7953%28v=vs.110%29.aspx

+0

Я уже проверил этот пример, но этот пример не делает пример о очереди, они просто сказали 'queueName' –

+0

Попробуйте перегрузку, которая не нуждается в имени очереди, если она вам не нужна :) Это требуется только если вам нужно разделить сообщения (изменения уведомлений) на разные очереди, чтобы их можно было обрабатывать одновременно. – Caramiriel

+0

не могли бы вы проверить мой новый вопрос http://stackoverflow.com/questions/28718201/why-sql-dependency-is-not-working-in-this-example –

-1

Попробуйте это, если столбец (hasBeenRead) тип данных бит string query = "SELECT * FROM TransferToSIP WHERE hasBeenRead = 'false'";

-1

"*" не допускается. Попробуйте инструкцию selct с именами полей и, возможно, dbowner

Смежные вопросы