在VS中连接数据库中的存储过程实现查询最高分,最低分,各分数段的人数,平均分,课程号由用户在程序运行时输入,在VS执行输出的完整代码
时间: 2024-03-06 15:48:24 浏览: 81
好的,以下是在VS中连接数据库中的存储过程实现查询最高分,最低分,各分数段的人数,平均分,课程号由用户在程序运行时输入的完整代码示例:
```
using System;
using System.Data;
using System.Data.SqlClient;
namespace CourseStatistics
{
class Program
{
static void Main(string[] args)
{
string connectionString = "Data Source=(local);Initial Catalog=TestDB;Integrated Security=True";
int courseId;
Console.Write("请输入课程编号:");
courseId = int.Parse(Console.ReadLine());
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlCommand command = new SqlCommand("GetCourseStatistics", connection))
{
command.CommandType = CommandType.StoredProcedure;
// 添加参数
SqlParameter parameter = new SqlParameter("@CourseId", SqlDbType.Int);
parameter.Value = courseId;
command.Parameters.Add(parameter);
// 执行存储过程
using (SqlDataReader reader = command.ExecuteReader())
{
if (reader.Read())
{
int minScore = reader.GetInt32(0);
int maxScore = reader.GetInt32(1);
double avgScore = reader.GetDouble(2);
int totalStudents = reader.GetInt32(3);
int aCount = reader.GetInt32(4);
int bCount = reader.GetInt32(5);
int cCount = reader.GetInt32(6);
int dCount = reader.GetInt32(7);
int fCount = reader.GetInt32(8);
// 输出结果
Console.WriteLine("最低分:{0}", minScore);
Console.WriteLine("最高分:{0}", maxScore);
Console.WriteLine("平均分:{0:F2}", avgScore);
Console.WriteLine("总人数:{0}", totalStudents);
Console.WriteLine("A级人数:{0}", aCount);
Console.WriteLine("B级人数:{0}", bCount);
Console.WriteLine("C级人数:{0}", cCount);
Console.WriteLine("D级人数:{0}", dCount);
Console.WriteLine("F级人数:{0}", fCount);
}
}
}
}
Console.ReadLine();
}
}
}
```
在上面的代码中,我们首先定义了一个名为“connectionString”的字符串变量,其中包含数据库连接字符串。然后,我们使用Console.ReadLine()方法获取用户输入的课程编号。接下来,我们打开数据库连接,并创建一个SqlCommand对象来执行存储过程。我们还添加了一个名为“@CourseId”的参数,以便在运行时指定课程编号。最后,我们使用SqlDataReader对象来读取执行结果,并将结果输出到控制台窗口中。
请注意,这只是一个示例代码,并且需要根据实际情况进行调整。如果您遇到任何问题,请随时与我联系。
阅读全文