已有打开的与此命令相关联的DataReader,必须首先将它关闭
我的代码之前在服务器上运行都是没问题的跑了好几个月了 可是最近一直报这个错误网站登录不了了请大家帮忙解决下面是我的代码:
页面代码:
protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
{
SysUser sysUser = new SysUser();
UserManager userManager = new UserManager();
sysUser.UserName = this.Login1.UserName;
sysUser.Password = this.Login1.Password;
sysUser = userManager.SysUserCheckLogin(sysUser);
if (sysUser != null)
{
Session["SysUserInfo"] = sysUser;
Server.Transfer("UserManager.aspx");
}
else
{
return;
}
}
bll代码:
//管理员用户登陆验证
public SysUser SysUserCheckLogin(SysUser user)
{
UserService userService = new UserService();
string sql = "select * from sysUser_tb where userName=@userName and password=@password";
SqlParameter[] param = new SqlParameter[]
{
new SqlParameter("@userName",user.UserName),
new SqlParameter("@password",user.Password)
};
return userService.GetSysUser(sql, param);
}
dal代码:
//得到网站管理员单个用户信息
public SysUser GetSysUser(string sql, SqlParameter[] param)
{
SysUser user = new SysUser();
SqlDataReader reader = DBHelper.GetReader(sql, param);
if (reader.HasRows)
{
reader.Read();
user.UserKey = int.Parse(reader["userKey"].ToString());
user.UserName = reader["userName"].ToString();
user.Password = reader["password"].ToString();
user.Type = int.Parse(reader["type"].ToString());
user.DateTime = reader["date"].ToString();
reader.Close();
return user;
}
else
{
reader.Close();
return null;
}
}
dbhalper 代码:
public static SqlDataReader GetReader(string sql, params SqlParameter[] values)
{
SqlCommand cmd = new SqlCommand(sql, Connection);
cmd.Parameters.AddRange(values);
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return reader;
}
请大家帮忙 先谢谢了
--------------------编程问答-------------------- 大家回答下 呀! --------------------编程问答-------------------- if(reader.Read()){
user.UserKey = int.Parse(reader["userKey"].ToString());
user.UserName = reader["userName"].ToString();
user.Password = reader["password"].ToString();
user.Type = int.Parse(reader["type"].ToString());
user.DateTime = reader["date"].ToString();
reader.Close();
return user;
}
else
return null;
换成dataset好点
--------------------编程问答-------------------- 换成Adapter+DataSet --------------------编程问答-------------------- 应该不是这的问题,仔细检查你的代码,肯定有地方调用了没关闭,我以前也遇见过 --------------------编程问答-------------------- using (SqlConnection cn = new SqlConnection(“”))
{
SqlCommand cmd1 = new SqlCommand("", cn);
cn.Open();
using (SqlDataReader dr1 = cmd1.ExecuteReader(CommandBehavior.CloseConnection))
{
while (dr1.Read())
{
string sql= "";
SqlConnection conn2 = new SqlConnection("");
SqlCommand cmd2 = new SqlCommand(sql, conn2 );
cmd2.ExecuteNonQuery();
}
}
}
--------------------编程问答-------------------- using (SqlDataReader dr1 = cmd1.ExecuteReader(CommandBehavior.CloseConnection))
这个好使
补充:.NET技术 , ASP.NET