gpt4 book ai didi

c# - 读取器关闭错误时调用读取的尝试无效

转载 作者:太空宇宙 更新时间:2023-11-03 21:09:37 26 4
gpt4 key购买 nike

我正在为员工创建一个新的登录页面并遇到错误

    mDB.Open();
SqlCommand cmd;
SqlDataReader rdr;
String strSql1 = "SELECT * FROM Employee ";
cmd = new SqlCommand(strSql1, mDB);
rdr = cmd.ExecuteReader();

while (rdr.Read() == true)
{
if (txtUsername.Text == (string)rdr["eUserName"] &&
txtPassword.Text == (string)rdr["ePassword"])
{
Session["sFlag"] = "T"; // sFlag = "T" means user has logged in
Session["sFirstName"] = rdr["eFirstName"];
Session["sLastName"] = rdr["eLastName"];
Session["sUsername"] = rdr["eUserName"];
btnLogout.Visible = true;
btnLogin.Visible = false;
mDB.Close();

} //end of if
} //end of while loop
// userid and password not matched, hence login unsuccessful
Session["sFlag"] = "F";
Session["sName"] = "";
Session["sUsername"] = "";
lblMessage.Text = "Username and password does not match- please try again. ";
mDB.Close();
}
protected void btnLogout_Click(object sender, EventArgs e)
{
btnLogout.Visible = false;
Session["sFlag"] = "L"; // L for logout
Session["sFirstName"] = "";
Session["sUsername"] = "";

}

它适用于我的其他客户登录页面。请帮助?我对此很陌生。非常感谢大家!

最佳答案

您正在关闭读取循环内的连接(使用 mDB.Close();)。这根本不是什么好事。要解决这个问题,请将关闭调用移至循环结束后完成:

while (rdr.Read() == true)
{
if (txtUsername.Text == (string)rdr["eUserName"] &&
txtPassword.Text == (string)rdr["ePassword"])
{
Session["sFlag"] = "T"; // sFlag = "T" means user has logged in
Session["sFirstName"] = rdr["eFirstName"];
Session["sLastName"] = rdr["eLastName"];
Session["sUsername"] = rdr["eUserName"];
btnLogout.Visible = true;
btnLogin.Visible = false;


} //end of if
} //end of while loop
mDB.Close();

关于c# - 读取器关闭错误时调用读取的尝试无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38565668/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com