mysql - 当控制台从计数 (*) 中给我正确的数字时,为什么 C# 一直从查询中给我 -1?

标签 mysql c#-4.0

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/

相关文章:

php - 提交按钮影响的不仅仅是一行

sql - SQL 中派生表的性能问题

asp.net-mvc-3 - 通过NuGet安装ServiceStack Web服务框架然后出现异常

c# - 以编程方式将用户控件添加到工具箱时出现问题

c# - OleDb Excel : No value given for one or more required parameters

c# - 在文本框失败时以红色突出显示的位置实现验证

mysql - 超过 2 个表的内连接

mysql - 在 mysql 中选择带有 order by 的案例

MySQL 不使用多列索引

javascript - 如何在页面加载和自动点击时获取警报消息内容