连接没有关闭。连接的当前状态是开放的! asp.net c#

时间:2017-09-21 21:42:16

标签: c# asp.net

我有3层网站asp.net c#。我想选择用户并检查他的用户类型是否登录。但我的代码不起作用。以上错误显示。请求帮助我做什么。 我的代码DAL:

public SqlDataReader select_user(string UserName)
        {
            connect.Open();
            SqlCommand cmd = new SqlCommand("SELECT * FROM UserInfo WHERE UserName=@UserName", connect);
            cmd.Parameters.AddWithValue("@UserName", UserName);
            SqlDataReader dr = cmd.ExecuteReader();
            return dr;
        }

和BL:

 public SqlDataReader Get_user()
        {
            return da.select_user(UserName);
        }

和界面代码:

 try
        {

            bll.UserName = UserNameTextBox.Text;
            Session.Add("_UserName", bll.UserName);
            bll.Get_user();
            SqlDataReader dr = bll.Get_user();
            if (dr.HasRows)
            {
                dr.Read();
                int Utyp = bll.UserTyp;
                if (Utyp == 0)
                {
                    Session.Add("Msg_", "dear user. you are unactive yet");
                    Response.Redirect("ShowMessage.aspx", false);
                }
                else
                    if (Utyp == 1)
                    {
                        Response.Redirect("index.aspx", false);
                    }

            }
            else
            {

            }
        }
         catch (Exception ex)
         {
             Session.Add("Msg_", "  : <br>" + ex.Message);
             Response.Redirect("~/ShowMessage.aspx");
         }

1 个答案:

答案 0 :(得分:1)

connect.Open();

应更改为:

if (connect.State == ConnectionState.Closed) {
    connect.Open();
}

确保它只尝试打开一次连接,而不是多次。

请注意,您可能还希望考虑按this answer添加using语句。