当前位置:编程学习 > C#/ASP.NET >>

已有打开的与此命令相关联的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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,