为什么连接中的第二个命令不起作用?
Why is the 2nd Command inside a Connection does not work?
我试图根据用户在登录文本框中输入的内容在两个 table 中进行测试,所以我测试 LoginName 是否在 Table [=13= 中];否则我会创建一个新命令,它将在另一个 table "Membres" 中查看。
问题是:当我输入 table "Redacteur" 中的登录名时,该命令有效,但是一旦我输入属于 Membres table 的登录名,它就不会将我重定向到我在代码中请求的页面。我认为它甚至没有进入 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();
}
}
}
您需要close/dispose第一个命令,然后才能在同一连接上执行一个命令。
快速而简单(即可行但不推荐)的解决方案是在 else
块的第一行添加 rd.Close()
。
我试图根据用户在登录文本框中输入的内容在两个 table 中进行测试,所以我测试 LoginName 是否在 Table [=13= 中];否则我会创建一个新命令,它将在另一个 table "Membres" 中查看。 问题是:当我输入 table "Redacteur" 中的登录名时,该命令有效,但是一旦我输入属于 Membres table 的登录名,它就不会将我重定向到我在代码中请求的页面。我认为它甚至没有进入 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();
}
}
}
您需要close/dispose第一个命令,然后才能在同一连接上执行一个命令。
快速而简单(即可行但不推荐)的解决方案是在 else
块的第一行添加 rd.Close()
。