把 ExecuteReader 方法写到类里面
返回的是 SqlDataReader 
关闭不了数据库连接
关闭后报错“阅读器关闭时 FieldCount 的尝试无效。”
怎么样才能读完数据后就关闭呢?

解决方案 »

  1.   

    ExecuteReader(ConmmandBehavior.CloseConnection)
    这样呢,如果你是帮定到DataGrid或DataList就可以
      

  2.   

    代码是这样的
    public static SqlDataReader localdata(string localsql)
    {
    SqlConnection localcnn = new SqlConnection(ConfigurationSettings.AppSettings["localcome"]);
    try
    {
    localcnn.Open();
    SqlCommand localcmd=new SqlCommand(localsql,localcnn);
    SqlDataReader localdr=localcmd.ExecuteReader(CommandBehavior.CloseConnection);
    return localdr;
    }
    catch (Exception ex)
    {
    throw (ex);
    }
    finally
    {
    //if(localcnn!=null){
    // localcnn.Close();}
    }
    }
      

  3.   

    SqlConnection和SqlDataReader是这样的关系,只有当SqlDataReader关闭之后,才可以关闭SqlConnection,如果提前关闭SqlConnection,那么SqlDataReader将不可用。也就是希望使用完SqlDataReader之后关闭SqlConnection,你可以在原有设计上加入一个参数:public static SqlDataReader localdata(SqlConnection localcnn , string localsql)
    {
        // 省略。。
    }在外部调用完成之后对localcnn调用Close方法