存储过程实现登录验证

(有传出参数的存储过程)
验证登陆:
--存储过程
create proc pro_dengluyanzheng
@username varchar (50),
@password varchar (50),
@result bit out
as
select * from T_User where UserName= @username and Password= @password
if @@ROWCOUNT >0
begin
set @result =1
end
else
begin
set @result =0
end
go

declare @fanhui bit
exec pro_dengluyanzheng 'yhzzxcb', '111', @fanhui out
print @fanhui
drop proc pro_dengluyanzheng
--程序
  protected void Button1_Click(object sender, EventArgs e)
        {
            string str = "data source=NGY-PC;initial catalog=News;user id=sa;pwd=7777777" ;//连接字符串
            using (SqlConnection conn = new SqlConnection(str))
            {
                conn.Open(); //打开连接
                using (SqlCommand cmd = conn.CreateCommand())//创建命令对象
                {
                  

                    string sql = "pro_dengluyanzheng" ;//声明sqlcommand命令对象要执行的是命令过程"pro_dengluyanzheng"
                    cmd.CommandType = CommandType.StoredProcedure;//当要执行的命令是存储过程时要声明下commandType要执行的内容
                    cmd.CommandText = sql; //执行语句

                    SqlParameter par1 = new SqlParameter( "@username", username.Text);//把文本框里的值传给变量
                    SqlParameter par2 = new SqlParameter( "@password", password.Text);
                    SqlParameter par3 = new SqlParameter( "@result", SqlDbType .Bit);
                    par3.Direction = ParameterDirection.Output;//写指向指定第三个参数是向外传的值的返回个bit类型的值
                    cmd.Parameters.Add(par1); //将变量添加到cmd命令对象中传给参数
                    cmd.Parameters.Add(par2);
                    cmd.Parameters.Add(par3);
                    cmd.ExecuteScalar(); //建个变量接收cmd.executenonquery的值
                    Response.Write(par3.Value);
                    bool b = Convert .ToBoolean(par3.Value);//得到第三个参数返回来的值
                    if (b)
                    {
                        Label2.Text = "登陆成功" ;
                    }
                    else { Label2.Text = "登陆失败" ; }
                }
            }
        }

你可能感兴趣的:(存储)