14

我正在尝试使用 C# 查找表的计数,SqlDataReader但我不断得到

不存在数据时的无效读取尝试

我的代码:

string sql = "SELECT COUNT(*) FROM [DB].[dbo].[myTable]";

SqlCommand cmd = new SqlComman(sql, connectionString);
SqlDataReader mySqlDataReader = cmd.ExecuteReader();

int count = mySqlDataReader.GetInt32(0); // Here is where I get the error.

COUNT(*)我知道我有一个与数据库的有效连接,因为我可以在很多地方读写它,我无法正确读取它有什么特别之处?如何获得int count要填充的内容?

4

2 回答 2

26

你必须阅读它:

if (mySqlDataReader.Read()) {
  count = mySqlDataReader.GetInt32(0);
}

或者,您可以只使用ExecuteScalar

int count = (int)cmd.ExecuteScalar();

定义为:

执行查询,并返回查询返回的结果集中第一行的第一列。其他列或行将被忽略。

于 2013-10-23T16:13:43.770 回答
0

ExecuteScalar 是您所需要的。

于 2015-01-11T08:21:56.270 回答