我试图根据用户在登录TextBox中输入的内容在两个表中进行测试,所以我测试了LoginName,如果它在Table" Redacteur&#34 ;;否则我会制作一个新的Command,它会在另一张桌子里面看到" Membres"。 问题是:当我输入表格中的loginName" Redacteur"时,该命令有效,但是一旦我输入属于Membres表格的loginName,它就不会将我重定向到我在代码中请求的页面。我认为它甚至没有进入Else部分。
using(SqlConnection connect = new SqlConnection(cs))
{
SqlCommand cmd = new SqlCommand("select * from Redacteurs where RedCode= @lg", connect);
cmd.Parameters.AddWithValue("@lg", TextLogIn.Text);
connect.Open();
//cmd.ExecuteNonQuery();
SqlDataReader rd = cmd.ExecuteReader();
if (rd.HasRows)
{
rd.Read();
Session["code"] = rd["RedCode"].ToString();
Session["loginname"] = TextLogIn.Text;
Session["pass"] = TextPass.Value;
Response.Redirect("RedacteurPage.aspx?Redact="
+ Session["loginname"].ToString());
rd.Close();
}
else
{
cmd = new SqlCommand("select * from Membres where LoginMembre = @lm", connect);
cmd.Parameters.AddWithValue("@lm", TextLogIn.Text);
//cmd.ExecuteNonQuery();
SqlDataReader rd2 = cmd.ExecuteReader();
if (rd2.HasRows)
{
rd2.Read();
Session["code"] = rd2["MembreCode"].ToString();
Session["loginname"] = TextLogIn.Text;
Session["pass"] = TextPass.Value;
Response.Redirect("ProductCatalogue.aspx?user=" + rd2["FullName"]);
rd2.Close();
}
}
}
答案 0 :(得分:1)
您需要关闭/处置第一个命令,然后才能在同一个连接上执行一个命令。
快速而肮脏(即工作但不推荐)解决方案是在rd.Close()
区块的第一行放置else
。