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(*),但我根本无法工作,每次都会给我语法错误。
答案 0 :(得分:3)
为什么在 查询时调用ExecuteNonQuery
?
使用ExecuteScalar
执行一个可以产生单个结果的查询。
ExecuteNonQuery
返回-1是完全正确的。来自DbCommand.ExecuteNonQuery
的文档:
对于UPDATE,INSERT和DELETE语句,返回值是数字 受命令影响的行数。对于所有其他类型的语句,返回值为-1。