连接没有关闭。连接';s的当前状态是打开的!asp.NETC#
我有三层网站asp.net c#。我想选择用户并检查其登录用户类型。但我的代码无效。和上面显示的错误。请帮我做什么。 我的代码:连接没有关闭。连接';s的当前状态是打开的!asp.NETC#,c#,asp.net,C#,Asp.net,我有三层网站asp.net c#。我想选择用户并检查其登录用户类型。但我的代码无效。和上面显示的错误。请帮我做什么。 我的代码: public SqlDataReader select_user(string UserName) { connect.Open(); SqlCommand cmd = new SqlCommand("SELECT * FROM UserInfo WHERE UserName=@UserName", co
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;
}
及基本法:
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");
}
试试看
{
bll.UserName=UserNameTextBox.Text;
添加(“\u用户名”,bll.UserName);
bll.Get_user();
SqlDataReader dr=bll.Get_user();
如果(哈斯罗博士)
{
里德博士();
int Utyp=bll.UserTyp;
如果(Utyp==0)
{
Session.Add(“Msg_”,“亲爱的用户,您还未激活”);
重定向(“ShowMessage.aspx”,false);
}
其他的
如果(Utyp==1)
{
重定向(“index.aspx”,false);
}
}
其他的
{
}
}
捕获(例外情况除外)
{
Session.Add(“Msg_uuquo,”:
“+ex.Message);
Response.Redirect(“~/ShowMessage.aspx”);
}
应改为:
if (connect.State == ConnectionState.Closed) {
connect.Open();
}
以确保它只尝试打开一次连接,而不是多次
<>请注意,你也可以考虑使用语句按添加< < > >你是否可以使用UpType来包装所有的ADO.NET对象,如UsUnter({ }),并注意关闭和处理这些对象。答案是否适用于你?
if (connect.State == ConnectionState.Closed) {
connect.Open();
}