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

时间:2010-09-16 05:59:23

标签: mysql c#-4.0

MySqlCommand checkUsername = conn.CreateCommand();
checkUsername.CommandText = "SELECT COUNT(*) FROM users WHERE username='admin'";
MessageBox.Show("The count is " + checkUsername.ExecuteNonQuery());

有更多的代码实际使用了这个“计数”,但它没有正常工作,所以我弹出这个小消息框来显示我实际接收的数字。当我去phpmyadmin并直接用SQL语言(我复制/粘贴)时,它没有问题,并给出了用户名存在的正确次数。但是,每次在我的程序中(C#,使用VS2010),它给我-1,名称是否不存在,或者我的5次。

我认为它必须与C#格式化它返回的数字有关,但我不确定如何纠正它。

我也读过使用EXISTS代替COUNT(*),但我根本无法工作,每次都会给我语法错误。

1 个答案:

答案 0 :(得分:3)

为什么在 查询时调用ExecuteNonQuery

使用ExecuteScalar执行一个可以产生单个结果的查询。

ExecuteNonQuery返回-1是完全正确的。来自DbCommand.ExecuteNonQuery的文档:

  

对于UPDATE,INSERT和DELETE语句,返回值是数字   受命令影响的行数。对于所有其他类型的语句,返回值为-1。