C# sql数据库中记录的值总数
我想从我的sql数据库返回表“Courses”中记录“hours”中的值的总和。我尝试了以下代码,但不起作用: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
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
,不是吗?