你为什么不返回成一个dataSet之类的呢?

解决方案 »

  1.   

    考虑到效率问题,如果是一次返回万条数据并显示在页面上的话,感觉还是reader占用的服务器资源少些。
        我不打算用分页的方法来让dataset来降低服务器资源消耗。
      

  2.   

    to  Hero4444(阿神)
    测试:
    Response.Write(freeme.ReturnDR.IsClosed.ToString)
    结果:
    True
    ——————
    看来用户自定义控件只要传出数据就已经将reader给close了...
    难道没有办法传递出一个reader么?奇怪
      

  3.   

    Public Function ReturnDR() As OleDb.OleDbDataReader      '返回datareader
                ChangDB() 
                 here??
                Return reader
    End Function
    你在這里看看能不能用reader.read()??
      

  4.   

    也是“在阅读器关闭时 Read 的尝试无效”!我昏
      

  5.   

    为什么要单纯用reader.read呢?这样做有什么目的么?
    一般情况下如果想要得到reader的内容通常这么写:
    if reader.read() then
    dropdownlist1.datasource=reader
    dropdownlist1.databind()
    end if
      

  6.   

    你在ChangDB()不要把连接关闭了,要关闭可以在用户控件里再弄个public方法专门在外部来关闭连接
      

  7.   

    Public Function ChangDB()    '将传入的sql语句执行
                Dim objconn As System.Data.OleDb.OleDbConnection
                Dim objcmd As System.Data.OleDb.OleDbCommand
                objconn = New System.Data.OleDb.OleDbConnection("连接字串")
                objconn.Open()
                objcmd = New System.Data.OleDb.OleDbCommand("sql语句", objconn)
                reader = objcmd.ExecuteReader()
                reader.read()  '但是在这里加入这句话就没有问题
                objconn.Close()
    End Function
    难道说reader必须要在生成它的Function 中使用?传递或者赋值都会自动关闭?
      

  8.   

    to:passacaglia(passacaglia)
    ChangDB()中我只是关闭了OleDbConnection ,reader我并没有关闭掉。
      

  9.   

    我将
    Private reader As OleDb.OleDbDataReader = Nothing 变成
    public reader As OleDb.OleDbDataReader = Nothing 然后在web应用程序中直接使用reader都不行