'----------------------数据访问类
public class ClsDbo
{
    //---数据库连接
    public static SqlConnection CreateConn()
    {
        string ConnString = System.Configuration.ConfigurationManager.AppSettings["ConnStringText"].ToString();// 连接字符串
        SqlConnection DbCon = new SqlConnection(ConnString);// 创建SqlConnection对象
        return DbCon;
    }
    //************************************************************得到一个列表
    public static SqlDataReader GetList(string Sql)
    {        SqlConnection Conn = CreateConn();
        Conn.Open();
            SqlCommand Cmd = new SqlCommand(Sql, Conn);
            Cmd.CommandTimeout = 300;
            SqlDataReader result = Cmd.ExecuteReader(CommandBehavior.CloseConnection);
            return result;
    }
}
//===============================页面访问
    private string GetOfTable(string InSql)
    {
        string OfTemp = "";
        SqlDataReader oSdr = ClsDbo.GetList(InSql);
        while (oSdr.Read())
        {
            ......省略
        }
        oSdr.Close(); //这个地方关闭了  数据库连接应该就关闭了!
        oSdr.Dispose();
        return OfTemp;
    }
//=============================

解决方案 »

  1.   

    public static SqlDataReader GetList(string Sql)我感觉问题应该在这里了.不是说DataReader对象要求一个打开的连接才能进行Read()操作吗?你试试用DataTableReader(2.0版才有的)
      

  2.   

    我的数据操作类是:public DataTable GetTable(string sql)
    {
       conn.Open();
       ......
       conn.Close();
    }//页面调用:
    private string XXX()
    {
       DataTableReader reader=dbo.GetTable(sql).CreateDataTableReader();
       ......
    }
      

  3.   

    using( SqlConnection DbCon = new SqlConnection(ConnString);// 创建SqlConnection对象)
      

  4.   

    Click the link to solve your problem.Good luck!