类中的存储过程和全局变量
本文关键字:全局变量 存储过程 | 更新日期: 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();
}
}
我如何存储从存储过程返回的值,以便我可以在单击按钮后的代码中访问它?
可以看到,结果在两个地方声明。我想在类中声明结果,并检查按钮单击事件的值。
存储过程返回三种类型的输出:
- 如果用户名或密码不正确则返回0
- 如果帐户不活动返回2
- 否则返回用户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);
,您就完成了