我想是因为你返回了一个datareader,而datareader是要求有数据库连接的,当你使用了using语句时,在using的结尾处这个connection被disposal了,导致你在使用datareader的时候出现上述问题

解决方案 »

  1.   

    cmd.Parameters.Clear();去掉试试,还有你为什么非要用 using 呢?自己用Dispose 释放不就可以了吗
      

  2.   

    OleDbDataReader rdr = OleDbHelper.ExecuteReader(strConn, CommandType.Text, "SELECT * FROM TestSp", null);
    --->>>>
    OleDbDataReader rdr = OleDbHelper.ExecuteReader(strConn, CommandType.Text, "SELECT * FROM TestSp", (OleDbParameter[])null);
      

  3.   

    pierven(牛牛) 说得对,在从DataReader中读取数据时必须有一个可用的数据库连接,你在返回DataReader前就释放掉数据库连接是无法读取数据的。