ADO.NET高效数据访问

使用ADO.NET执行带参数的SQL语句

1.使用ADO.NET执行带参数SQL语句

存储过程综合查询的编写

存储过程综合运用

使用存储过程实现全校考试信息的统计

USE SMDB 
GO
IF
	EXISTS ( SELECT * FROM sysobjects WHERE name = 'usp_ScoreQuery' ) DROP PROCEDURE usp_ScoreQuery 
GO
	CREATE PROCEDURE usp_ScoreQuery @className VARCHAR ( 20 ),
	@stuCount INT OUTPUT,
	@absentCount INT OUTPUT,
	@avgDB INT OUTPUT,
	@avgCSharp INT OUTPUT AS
IF
	( LEN( @className ) = 0 ) BEGIN-- Query All School
	SELECT
		m.StudentId,m.StudentName,n.ClassName,SQLServerDB,CSharp 
	FROM Students m
		INNER JOIN StudentClass n ON m.ClassId= n.ClassId
		INNER JOIN ScoreList l ON m.StudentId= l.StudentId 
        
        --查询考试统计信息
        
        select @stuCount=COUNT(*),@avgDB=AVG(SQLServerDB),
        @avgCSharp=AVG(CSharp) from ScoreList
        
        select @absentCount=COUNT(*) from Students 
        where StudentId not in
        (select StudentId from ScoreList)

        --查询没有参加考试的学生姓名集合
        select StudentName from Students where StudentId 
        not in(select StudentId from ScoreList)

	END 
    ELSE 

    BEGIN
	SELECT
		m.StudentId,m.StudentName,	n.ClassName,SQLServerDB,CSharp 
	FROM
		Students m
		INNER JOIN StudentClass n ON m.ClassId= n.ClassId
		INNER JOIN ScoreList l ON m.StudentId= l.StudentId 
	WHERE
		ClassName =@className 
               
               
        --查询考试统计信息        
        select @stuCount=COUNT(*),@avgDB=AVG(SQLServerDB),
        @avgCSharp=AVG(CSharp) from ScoreList 
        
        select @absentCount=COUNT(*) from Students 
        inner join StudentClass on StudentClass.ClassId=Students.ClassId
        where Students.StudentId not in
        (select StudentId from ScoreList) and ClassName =@className 

        --查询没有参加考试的学生姓名集合
        select StudentName from Students 
        inner join StudentClass on StudentClass.ClassId=Students.ClassId
        where Students.StudentId 
        not in(select StudentId from ScoreList)
        and ClassName =@className 
END 
GO

数据访问类编写1

        //通用数据访问类
        #region 调用存储过程执行多结果查询
        public static SqlDataReader GetReader(string procedureName, SqlParameter[] parameters) 
        {
            string constr = "";
            SqlConnection connection = new SqlConnection(constr);
            SqlCommand command = new SqlCommand();
            try
            {
                connection.Open();
                command.Connection = connection;
                command.CommandType = CommandType.StoredProcedure;//设置当前操作是执行存储过程
                command.CommandText = procedureName;//设置存储过程名称
                command.Parameters.Add(parameters);//添加存储过程参数数组
                return command.ExecuteReader(CommandBehavior.CloseConnection);
            }
            catch (Exception ex)
            {
                connection.Close();
                throw ex;
            }
        }
        #endregion
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值