为什么连接中的第二个命令不起作用?

时间:2016-05-06 20:31:51

标签: c# asp.net asp.net-mvc asp.net-mvc-4 webforms

我试图根据用户在登录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();
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您需要关闭/处置第一个命令,然后才能在同一个连接上执行一个命令。

快速而肮脏(即工作但不推荐)解决方案是在rd.Close()区块的第一行放置else