2014-10-09 84 views
1

我需要帮助,当我运行我的查询并将其放入一个变量时,它返回-1,任何人都知道为什么?SELECT COUNT(*)returns -1

OleDbCommand numberOfHomes = new OleDbCommand("SELECT COUNT(*) FROM HOME", con); 

int homes = numberOfHomes.ExecuteNonQuery(); 

lblNumberOfHomes.Text = homes.ToString(); 

这是在Visual Studio 2013进行

感谢

回答

4

任何人知道这是为什么?

因为您使用ExecuteNonQuery进行查询。你想使用ExecuteScalar

int homes = (int)numberOfHomes.ExecuteScalar(); 

ExecuteNonQuery-documentation

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

+0

谢谢蒂姆,我改变了它,现在它给我一个错误投 System.InvalidCastException:指定的转换无效 – Ray 2014-10-09 09:57:05

+0

@Ray:如果执行'numberOfHomes.ExecuteScalar()'在调试器,是什么它会返回吗?你使用的是什么数据库? – 2014-10-09 10:03:59

+0

我想出了Tim,这就是我所做的 对象homesNmbr = numberOfHomes.ExecuteScalar(); int homes = Convert.ToInt32(homesNmbr); lblNumberofHomes.Text = homes.ToString(); 返回正确的数字 – Ray 2014-10-09 10:07:14