阅读器关闭时 FieldCount 的尝试无效。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidOperationException: 阅读器关闭时 FieldCount 的尝试无效。源错误: 
行 44:             dlHTDJ.DataValueField = "htdjid";
行 45:             dlHTDJ.DataSource = htlbReader;
行 46:             dlHTDJ.DataBind();
行 47: 
行 48:             CloseConnection();
 源文件: h:\ASP.NET\WebSites\WebSite2\hetong\contractedit.aspx.cs    行: 46 
====================================================================================源码是这样的,在页面的page_load里面,有
        if (!IsPostBack) {
            HTDJSql = "select htlbid,htlb from htlb order by htlbid";
            OleDbDataReader htlbReader = GetDataReader(HTDJSql);
            dlHTLB.DataTextField = "htlb";
            dlHTLB.DataValueField = "htlbid";
            dlHTLB.DataSource = htlbReader;
            dlHTLB.DataBind();
            CloseConnection();
            //然后检索
            HTDJSql = "select htdjid,htdj from htdj order by htdjid";
            OleDbDataReader htdjReader = GetDataReader(HTDJSql);
            dlHTDJ.DataTextField = "htdj";
            dlHTDJ.DataValueField = "htdjid";
            dlHTDJ.DataSource = htlbReader;
            dlHTDJ.DataBind();            CloseConnection();            subDisplay();
        }
其中调用了GetDataReader函数,这个函数的源码是:    public OleDbDataReader GetDataReader(string sql)
    {
       OleDbCommand myCmd;
        myCmd = new OleDbCommand(sql, conn);             conn.Open();
        return myCmd.ExecuteReader();    }这其中的conn是定义的public OleDbConnection conn; ,请问这个问题怎么解决?个人认为这个DataReader并没有关闭啊

解决方案 »

  1.   

    OleDbDataReader htdjReader = GetDataReader(HTDJSql);
    dlHTDJ.DataTextField = "htdj";
    dlHTDJ.DataValueField = "htdjid";
    dlHTDJ.DataSource = htlbReader;
    ==============================
    写错了,应该是htdjReader
    dlHTDJ.DataBind();CloseConnection();
      

  2.   

    哦,不好意思,这么低级的错误也要大家费心。
    现在还有一个错误,就是上面写的那个GetDataReader函数,返回的时候有错误:标准表达式中数据类型不匹配。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: 标准表达式中数据类型不匹配。源错误: 
    行 77: 
    行 78:              conn.Open();
    行 79:         return myCmd.ExecuteReader();
    行 80: 
    行 81:     }
     源文件: h:\ASP.NET\WebSites\WebSite2\hetong\contractedit.aspx.cs    行: 79 return myCmd.ExecuteReader();//就是这一句
      

  3.   

    OleDbDataReader htdjReader = GetDataReader(HTDJSql);
                dlHTDJ.DataTextField = "htdj";
                dlHTDJ.DataValueField = "htdjid";
                dlHTDJ.DataSource = htlbReader;
    ===============================================
    OleDbDataReader htdjReader = GetDataReader(HTDJSql);
                dlHTDJ.DataTextField = "htdj";
                dlHTDJ.DataValueField = "htdjid";
                dlHTDJ.DataSource = htdjReader;
      

  4.   

    可是关闭了之后,再怎么能 绑定 呢?dlHTDJ.DataBind();