2014-10-09 5 views
1

Мне нужна помощь с этим, когда я запускаю свой запрос и помещаю его в переменную, которая возвращает -1, кто-нибудь знает почему?SELECT COUNT (*) return -1

OleDbCommand numberOfHomes = new OleDbCommand("SELECT COUNT(*) FROM HOME", con); 

int homes = numberOfHomes.ExecuteNonQuery(); 

lblNumberOfHomes.Text = homes.ToString(); 

Это делается в Visual Studio 2013

Благодарности

ответ

4

кто-нибудь знает почему?

Поскольку вы используете ExecuteNonQuery для запроса. Вы хотите использовать ExecuteScalar.

int homes = (int)numberOfHomes.ExecuteScalar(); 

Из ExecuteNonQuery-documentation:

Для UPDATE, INSERT и DELETE заявления, возвращаемое значение является число строк, затронутых командой. Для всех остальных типов операторов возвращаемое значение равно -1.

+0

Спасибо Тим, я изменил его и теперь его дает мне ошибку произнесения System.InvalidCastException: Указанный литая не является действительным – Ray

+0

@Ray: если вы выполняете 'numberOfHomes.ExecuteScalar()' в отладчике, какие он возвращается? В какой базе данных вы вообще используете? –

+0

Я понял это Тим, это то, что я сделал объект homesNmbr = numberOfHomes.ExecuteScalar(); int homes = Convert.ToInt32 (homesNmbr); lblNumberofHomes.Text = homes.ToString(); Это вернуло правильный номер – Ray

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