请教一个问题,在C#中,如果有一个多层游标的SQL,取出来的数据绑定在一个treeview上,是不是对每层游标都要定义一个数据库连接?我的意思是,比如:学院---系---专业----班级,如果要把这4层数据绑定要一个treeview上,是不是要定义4个数据库连接?我在书上看这么一句话:由于oleDbDataReader对象需要独占数据库连接,所以为了避免程序发生冲突,需要为每一个oleDbDataReader定义不同的数据连接对象

解决方案 »

  1.   


    对于递归查询,并且你在每一层都独占一个DbDataReader(而不是读取到DataTable、List<T>等结构的数据里边),那么自然在递归的深一层需要另外创建一个DbConnection来进行查询。不过需要几个数据库连接,只跟你的树的深度有关。而且数据库逻辑连接机制往往是基于连接池的,创建一个新的连接对象并不真正花费什么时间。可以说,如果你的树的深度小于20层,完全不用担心“创建多个数据库连接”的问题!
      

  2.   


    非常感谢答复,我试了一下,我用一个connection做一次数据库连接,然后用4个command和4个reader对象来从数据库里取出数据,在while体里绑定到treeview上程序没有报错。
      

  3.   

    只要确保同时只有一个reader出于open状态就可以。