基于存储过程的ASP.NET用户登录示例

-----------------存储过程

CREATE proc login

@user VARCHAR(20),

@pwd VARCHAR(20),

@Return BIT OUTPUT --输出参数

AS

-- 定义一个临时用来保存密码的变量

DECLARE @pwd2 VARCHAR(20)

BEGIN

--从表中查询当前用户的密码,赋值给 @pwd2 变量,下面要对他进行比较

SELECT @pwd2=pwd FROM user WHERE user=@user

IF @pwd2 = @pwd

BEGIN

SET @Return = 1

-- 更新用户最后登录时间

UPDATE user SET tim=GETDATE() WHERE user=@user

update user set num=num+1 where user=@user

END

ELSE

SET @Return = 0

END

GO

--------------login.aspx.cx中代码

protected void login_Click(object sender, ImageClickEventArgs e)

{

string sqlcn = "Data Source=.;Initial Catalog=dataname;Persist Security Info=True;User ;

SqlConnection conn = new SqlConnection(sqlcn);

conn.Open();

SqlCommand cmd = new SqlCommand("login", conn);

cmd.CommandType = CommandType.StoredProcedure; //选择存储过程

cmd.Parameters.Add("@user", SqlDbType.VarChar, 20);

cmd.Parameters.Add("@pwd", SqlDbType.VarChar, 20);

cmd.Parameters["@user"].Value = user.Text;

cmd.Parameters["@pwd"].Value = pwd.Text;

cmd.Parameters.Add("@Return",SqlDbType.Bit,2);

--------------------------------使用output value的方式获取存储过程执行结果

cmd.Parameters["@Return"].Direction=ParameterDirection.OutPut;

cmd.ExcuteNonQuery();//一定先执行,才可以获得@Return值

string return=cmd.Parameters["@Return"].Value.ToString();

-----------------------------------------------------------

cmd.Parameters["@Return"].Direction = ParameterDirection.Output;

cmd.ExecuteNonQuery();

bool flag = Convert.ToBoolean(cmd.Parameters["@Return"].Value);

if(flag)

Response.Redirect("index.aspx");

else

Response.Write("用户名或密码错误"); }