我有一个问题,我需要一些帮助。我有以下查询:
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
答案 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);