SQL datareader字段名称超出范围

时间:2013-10-30 10:40:16

标签: sql-server

我有一个问题,我需要一些帮助。我有以下查询:

        SqlCommand randCode = new SqlCommand("(SELECT COUNT(student_ID) FROM COMPLETED)", conn);
        SqlDataReader randCodeR;
        connectie.Open();
        randCodeR = randCode.ExecuteReader();

        int count = randCodeR.GetOrdinal("student_ID");

COMPLETED有500名学生,randCodeR有1个值为500的字段。现在,我希望将该值放入count变量,但是当我尝试上面的代码时,它会在randCodeR.GetOrdinal(“student_ID”)中显示student_ID )超出范围。为什么它没有在datareader中看到student_ID,我如何从中获取价值?感谢。

Microsft SQL server 2012

2 个答案:

答案 0 :(得分:2)

更改

int count = randCodeR.GetOrdinal("student_ID");

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

所以SqlCommand.ExecuteScalar代替SqldataReader.GetOrdinal,它返回结果集中列的索引。你完全不需要阅读器。

答案 1 :(得分:0)

因为student_ID不存在。在计算列上指定别名将删除错误。

string _sqlQuery = "SELECT COUNT(student_ID) student_ID FROM COMPLETED";
SqlCommand randCode = new SqlCommand(_sqlQuery, conn);