C# sql数据库中记录的值总数

C# sql数据库中记录的值总数,c#,sql,C#,Sql,我想从我的sql数据库返回表“Courses”中记录“hours”中的值的总和。我尝试了以下代码,但不起作用: SqlCommand cmd = new SqlCommand("Select Courses.hours from Courses inner join Sched on Courses.Id = Sched.SCourses ", con2); SqlDataReader rdr = cmd.ExecuteReader(); while (rdr.Read()) { Sql

我想从我的sql数据库返回表“Courses”中记录“hours”中的值的总和。我尝试了以下代码,但不起作用:

SqlCommand cmd = new SqlCommand("Select Courses.hours from Courses inner join Sched on Courses.Id = Sched.SCourses ", con2);
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
    SqlCommand cmd2 = new SqlCommand("Select sum(hours) as totalHours from Courses");
    Label3.Text = cmd2.ToString();
}

代码中有两个问题:执行
while(rdr.Read())
循环遍历结果集的所有行,并执行
选择sum(hours)…
第一次查询中得到的行数的倍

根据需求,您可能希望执行
if
而不是
while

if (rdr.Read())
接下来,
cmd2.ToString()将不会输出查询结果。您应该像第一种情况一样使用
ExecuteReader
,或者使用ExecuteScalar

if (rdr.Read())
{
    SqlCommand cmd2 = new SqlCommand("Select sum(hours) as totalHours from Courses", con2);
    Label3.Text = cmd2.ExecuteScalar().ToString();  
}

为什么要使用单独的查询来合计工时。使用
groupby
子句并仅运行一次

SqlCommand cmd = new SqlCommand("Select Courses.id, Sum(Courses.hours) from Courses inner join Sched on Courses.Id = Sched.SCourses group by Course.id")
SqlDataReader rdr = cmd.ExecuteReader();
Label3.Text = cmd.ExecuteScalar().ToString();

希望它能有所帮助。

您没有为sql命令cmd2指定连接。 试试这个

 SqlCommand cmd2 = new SqlCommand("Select sum(hours) as totalHours from Courses",con2);
 Label3.Text = cmd2.ExexcuteScalar().ToString();

欢迎来到堆栈溢出!你能详细说明你的代码是如何“不工作”的吗?你在期待什么,到底发生了什么?如果您遇到异常/错误,请发布发生该异常/错误的行以及异常/错误详细信息。请输入这些详细信息,否则我们可能无法提供帮助。因此
cmd2.ToString()if(rdr.Read())
放置一段时间,code>将执行查询并将结果分配给
Label3.Text
,不是吗?