Почему C # продолжает давать мне -1 из запроса, когда консоль дает мне правильное число из числа (*)? - PullRequest
1 голос
/ 16 сентября 2010
MySqlCommand checkUsername = conn.CreateCommand();
checkUsername.CommandText = "SELECT COUNT(*) FROM users WHERE username='admin'";
MessageBox.Show("The count is " + checkUsername.ExecuteNonQuery());

Существует больше кода, где этот «счетчик» фактически используется, но он не работал правильно, поэтому я сделал это маленькое окно с сообщением, чтобы показать, какой номер я фактически получал. Когда я захожу в phpmyadmin и выполняю прямое слово в слово (я копирую / вставляю), это не вызывает проблем и дает правильное количество раз, когда существует имя пользователя. Тем не менее, каждый раз, когда в моей программе (C #, использующей VS2010), мне выдается -1, независимо от того, существует ли это имя или оно у меня 5 раз.

Я думаю, это как-то связано с тем, как C # форматирует возвращаемое число, но я не совсем уверен, как это исправить.

Я также читал об использовании EXISTS для этого вместо COUNT (*), но я не мог заставить это работать вообще, он каждый раз выдавал мне синтаксические ошибки.

1 Ответ

3 голосов
/ 16 сентября 2010

Почему вы звоните ExecuteNonQuery, когда является запросом?

Используйте ExecuteScalar для выполнения запроса, который даст один результат.

ЭтоСовершенно верно для ExecuteNonQuery вернуть -1.Из документов DbCommand.ExecuteNonQuery:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...