如何从SqlDataReader中读取SQL Server COUNT

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被填充?


为count(*)取一个别名。 - Dan Bracuk
2个回答

26

你必须阅读它:

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

或者,您可以直接使用ExecuteScalar

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

定义如下:

执行查询,并返回查询结果集中第一行的第一个列。忽略额外的列或行。


0

你需要使用ExecuteScalar。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接