数据库——存储过程(C#实现)

本文介绍了如何在C#中创建和执行数据库存储过程。存储过程名为QueryEmployee,用于查询匹配指定名称的Customer记录,并返回记录总数。文章详细展示了两种执行存储过程的方法,并在Visual Studio中演示了如何在C#代码中调用该存储过程,获取输出参数和返回值。

创建一个存储过程
 CREATE PROC QueryEmployee(@name NVARCHAR(50),@countEmp INT OUTPUT)
 AS
 BEGIN
 DECLARE @returnValue INT
       BEGIN TRAN M
 SELECT @countEmp=COUNT(*) FROM Customer
 SELECT * FROM Customer WHERE CustomerName LIKE
'%'+@name+'%'
 SELECT @returnValue=@@ROWCOUNT--@@RowCount返回上次处理数据库的行数
 RETURN @returnValue
 END
执行一个存储过程
 /*第一种方式*/
 DECLARE @COUNT INT ,@RETURNV INT
 EXEC @RETURNV= QueryEmployee '4',@COUNT OUT
 SELECT @RETURNV
 SELECT @COUNT
 /*第二种方式*/
 DECLARE @COUNT INT ,@RETURNV INT
 EXEC @RETURNV= QueryEmployee @NAME= '4',@countEmp=@COUNT OUT
 SELECT @RETURNV
 SELECT @COUNT
 在VS中执行存储过程的时候:
        public List<EmployeeInfo> TestProc(string empName, out int empCount, out int findEmpCount)
        {

            string cmdText = "QueryEmployee";
            using (SqlConnection conn = new SqlConnection(DBSetting.SqlConnectionString))
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand(cmdText, conn);
                cmd.CommandType = CommandType.StoredProcedure;//设置执行存储过程
                //普通参数
                cmd.Parameters.Add(new SqlParameter("@name", SqlDbType.NVarChar, 50));
                cmd.Parameters["name"].Value = empName;
                //输出参数
                cmd.Parameters.Add(new SqlParameter("@countEmp", SqlDbType.Int));
                cmd.Parameters["@countEmp"].Direction = ParameterDirection.Output;//设置输出参数
                //返回值参数
                cmd.Parameters.Add(new SqlParameter("@returnValue", SqlDbType.Int));
                cmd.Parameters["@returnValue"].Direction = ParameterDirection.ReturnValue;//设置返回值

                List<EmployeeInfo> list = new List<EmployeeInfo>();
                using (SqlDataReader rdr = cmd.ExecuteReader())
                {
                    while (rdr.Read())
                    {
                        EmployeeInfo info=new  Employee();
                        info.ID=new Guid(rdr["EmployeeID"].ToString());//将Guid强制类型转换
                        info.name=rdr["Name"].Tostring();
                        list.Add(info);
                    }
                    empCount = (int)cmd.Parameters["@countEmp"].Value;
                    findEmpCount = (int)cmd.Parameters["@returnValue"].Value;
                }
            }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值