Net存储过程的应用

存储过程参数使用主要分

1. 输入参数
2. 输出参数
3 返回参数

Sql脚本

create table Student11
(
Idx int IDENTITY(1,1) NOT NULL primary key,
userName nvarchar(50) NULL,
uPwd nvarchar(50) NULL,
createdate datetime NULL,
)

create proc proc_Insert
@userName varchar(50),
@uPwd varchar(50),
@createdate datetime,

@currentIdx varchar(50) output
As
Begin
	insert into Student(userName,uPwd,createdate) values(@userName,@uPwd,@createdate)
	
	declare @strTemp varchar(50)
	select @strTemp=MAX(idx) from Student
	set @strTemp = cast(@strTemp as int) + 1
	set @currentIdx = @strTemp

	If @@ERROR<>0 
		return -1
	Else
		return 1
End

 

C#开发代码

  private void btnAdd_Click(object sender, EventArgs e)
        {
            using (SqlConnection conn = new SqlConnection())
            {
                conn.ConnectionString = "Server=.;UId=william5;Pwd=william5;Database=testDb";
                conn.Open();

                using (SqlCommand commd = new SqlCommand())
                {
                    commd.Connection = conn;
                    commd.CommandType = CommandType.StoredProcedure;
                    commd.CommandText = "proc_insert";

                    SqlParameter[] parms = { 
                                            new SqlParameter("@userName",SqlDbType.VarChar,50),
                                            new SqlParameter("@uPwd",SqlDbType.Int),
                                            new SqlParameter("@createdate",SqlDbType.DateTime)
                                           };
                    parms[0].Value = this.txtName.Text;
                    parms[1].Value = Convert.ToInt32(this.txtAge.Text);
                    parms[2].Value = Convert.ToDateTime(this.txtCreatedate.Text);
                    commd.Parameters.AddRange(parms);

                    SqlParameter parmReturn = new SqlParameter("@return", SqlDbType.Int);
                    parmReturn.Direction = ParameterDirection.ReturnValue;
                    commd.Parameters.Add(parmReturn);

                    SqlParameter parmOutput = new SqlParameter("@currentIdx",SqlDbType.VarChar,50);
                    parmOutput.Direction = ParameterDirection.Output;
                    commd.Parameters.Add(parmOutput);

                    commd.ExecuteNonQuery();

                    int iReturn = Convert.ToInt32(commd.Parameters["@return"].Value);
                    if (iReturn == 1)
                    {
                        MessageBox.Show("添加成功");
                        MessageBox.Show("当前的Idx=" + commd.Parameters["@currentIdx"].Value);
                    }
                    else
                    {
                        MessageBox.Show("添加失败");
                    }

                }
            }
        }

 

========================= 基本使用如上
 部分代码备忘录

SqlHelper添加方法

 public static SqlParameter MakeReturnParameter(string parameterName, SqlDbType dbType, int length)
        {
            SqlParameter parameter = new SqlParameter();
            parameter.ParameterName = parameterName;
            parameter.SqlDbType = dbType;
            parameter.Direction = ParameterDirection.ReturnValue;
            if (dbType != SqlDbType.DateTime)
                parameter.Size = length;

            return parameter;
        }

        public static SqlParameter MakeReturnParameter(string parameterName, SqlDbType dbType)
        {
            SqlParameter parameter = new SqlParameter();
            parameter.ParameterName = parameterName;
            parameter.SqlDbType = dbType;
            parameter.Direction = ParameterDirection.ReturnValue;

            return parameter;
        }


应用时所写

 private void myAdd()
        {
            SqlConnection conn = new SqlConnection();
            conn.ConnectionString = "Server=.;UId=william5;Pwd=william5;Database=testDb";
            conn.Open();

            SqlParameter[] parms = {SqlHelper.MakeInParameter("@userName", SqlDbType.VarChar, 50, this.txtName.Text),
                        SqlHelper.MakeInParameter("@uPwd", SqlDbType.Int, this.txtAge.Text),
                        SqlHelper.MakeInParameter("@createdate", SqlDbType.DateTime, this.txtCreatedate.Text),
                        SqlHelper.MakeReturnParameter("@return", SqlDbType.Int),
                        SqlHelper.MakeOutParameter("@currentIdx", SqlDbType.VarChar, 50)};

            SqlHelper.ExecuteNonQuery(conn, CommandType.StoredProcedure, "proc_insert", parms);

            MessageBox.Show(parms[3].Value.ToString()); //获取存储过程返回值
            MessageBox.Show(parms[4].Value.ToString()); //获取存储过程输出参数
        }


 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值