我设了一个断点需要查看reader.IsClosed的状态是否关闭,可是断点到  return user;后就跳出方法了,
也就是reader.Close();这个没有走过,reader的IsClosed的值是“false”.
意思是没有关闭呀,那么我的reader的.Close();永远都不执行了么?咋办呢
public static LoginUserModel getUserByUserName(string userName)
{
LoginUserModel user = new LoginUserModel();
SqlDataReader reader = DataHelpe.ExecuteReader(sql);  while(reader.Read())
     {
                   
        user.user_id = Convert.ToInt32(reader["use_id"].ToString());
        user.userName = reader["name"].ToString();
        ...                   
                   
      }
     return user;
     reader.Close();
     Console.WriteLine("读取完毕后的状态:" + reader.IsClosed.ToString());
               
 }        

解决方案 »

  1.   

    public static LoginUserModel getUserByUserName(string userName) 

    LoginUserModel user = new LoginUserModel(); 
    SqlDataReader reader = DataHelpe.ExecuteReader(sql); 
    try
    {
      while(reader.Read()) 
        { 
                      
            user.user_id = Convert.ToInt32(reader["use_id"].ToString()); 
            user.userName = reader["name"].ToString(); 
            ...                  
                      
          } 
    }
    finally
    {
        reader.Close(); 
        Console.WriteLine("读取完毕后的状态:" + reader.IsClosed.ToString()); }
        return user; 
                      
    }  
      

  2.   

    调换一下程序顺序不行么?
    先close再return
      

  3.   

        reader.Close(); 
        Console.WriteLine("读取完毕后的状态:" + reader.IsClosed.ToString()); 
        return user; 
      

  4.   

    try 

      while(reader.Read()) 
        { 
                      
            user.user_id = Convert.ToInt32(reader["use_id"].ToString()); 
            user.userName = reader["name"].ToString(); 
            ...                  
                      
          } 

    finally 

        reader.Close(); 

        
      

  5.   

    是啊····!我真白痴了,
    我先是这么想的,如果先关闭了再return的话,都关闭了,还···
    现在真是大彻了!!!晕呀我···
    谢谢大家给我提示!!!!!
      

  6.   


    using(SqlDataReader reader = DataHelpe.ExecuteReader(sql))
    {
        while(reader.Read()) 
        { 
                      
            user.user_id = Convert.ToInt32(reader["use_id"].ToString()); 
            user.userName = reader["name"].ToString(); 
            ...                  
                      
        }     reader.Close();
        return user; }