类中的存储过程和全局变量

本文关键字:全局变量 存储过程 | 更新日期: 2023-09-27 18:16:39

我有一个名为UserInfo的类。在这个类中,我调用一个SQL存储过程来验证用户。存储过程返回一个输出。

我得到输出并将其存储在类的局部变量中,在这种情况下只能在UserInfo类中访问。

这是类:

public class UserInfo
{
    public void validateUser(string username, string password)
    {
        string constring = "Data Source=db;Initial Catalog=Portal;User ID=u;Password=p";
        using (SqlConnection con = new SqlConnection(constring))
        {
            using (SqlCommand cmd = new SqlCommand("agentAuthentication", con))
            {
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@username", username);
                cmd.Parameters.AddWithValue("@password", password);
                cmd.Parameters.Add("@loginresults", SqlDbType.BigInt, 8);
                cmd.Parameters["@loginresults"].Direction = ParameterDirection.Output;
                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();
                int result =Convert.ToInt32(cmd.Parameters["@loginresults"].Value);
            }
        }
    }
}

在点击登录页面按钮时,我调用这个类来验证用户。

 protected void btnLogin_Click(object sender, EventArgs e)
    {
        try
        {
            string username = text1.Value.Trim();
            string password = text2.Value.Trim();
            UserInfo u = new UserInfo();
            u.validateUser(username, password);
            int result = 0;
            if (result == 0)
            {
                Response.Write("<script>alert('Incorrect username or password');</script>");
            }
            if (result == 2)
            {
                Response.Write("<script>alert('Your account is inactive');</script>");
            }
            if (result != 0 && result != 2)
            {
                Session["isLoggedIn"] = 1;
                Response.Redirect("~/default.aspx");
            }
        }
        catch (Exception ex)
        {
            ex.ToString();
        }
    }

我如何存储从存储过程返回的值,以便我可以在单击按钮后的代码中访问它?

可以看到,结果在两个地方声明。我想在类中声明结果,并检查按钮单击事件的值。

存储过程返回三种类型的输出:

  1. 如果用户名或密码不正确则返回0
  2. 如果帐户不活动返回2
  3. 否则返回用户ID。

类中的存储过程和全局变量

UserInfo类中更改public void validateUser(string username, string password)public int validateUser(string username, string password)并返回结果。在using子句之外声明这个结果变量,并将其初始值设置为0。

btnLogin_Click中,将u.validateUser(username, password);更改为int result = u.validateUser(username, password);,您就完成了