MySqlCommand checkUsername = conn.CreateCommand();
checkUsername.CommandText = "SELECT COUNT(*) FROM users WHERE username='admin'";
MessageBox.Show("The count is " + checkUsername.ExecuteNonQuery());
还有更多代码实际使用了这个“count”,但它没有正常工作,所以我让这个小消息框弹出来显示我实际收到的数字。当我去 phpmyadmin 并逐字逐句地执行 SQL(我复制/粘贴)时,它没有任何问题,并且给出了正确的用户名存在次数。但是,每次在我的程序(C#,使用 VS2010)中它都会给我 -1,无论该名称不存在,还是我在他们的 5 次中都有。
我认为这一定与 C# 格式化它返回的数字的方式有关,但我不确定如何更正它。
我还阅读了关于为此使用 EXISTS 而不是 COUNT(*) 的信息,但我根本无法让它工作,它每次都会给我语法错误。
最佳答案
当 是一个查询时,为什么要调用 ExecuteNonQuery
?
使用 ExecuteScalar
执行一个会给出单一结果的查询。
ExecuteNonQuery
返回-1 是非常正确的。来自 DbCommand.ExecuteNonQuery
的文档:
For UPDATE, INSERT, and DELETE statements, the return value is the number of rows affected by the command. For all other types of statements, the return value is -1.
关于mysql - 当控制台从计数 (*) 中给我正确的数字时,为什么 C# 一直从查询中给我 -1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3724085/