你不能在递归当中使用同一个连接你的conn是定义在方法外面吧,不要定义在外面,改称每次使用的时候创建一个新连接

解决方案 »

  1.   

    实际上,像你这样使用一个连接是不对的,连接是宝贵的资源,不能像你这样打开之后就一直用,到程序完才释放,你应该用的时候才去构造一个连接对象,用完就Close。
    .Net应用了连接池,所以你不用担心new Connection会影响效率,论坛上很多关于连接池的讨论,我也答了不少,建议你去看看:
    http://expert.csdn.net/Expert/topic/1517/1517079.xml?temp=.8440515另外,关于你的这个问题,你在递归当中使用Reader去读数据库是不明智的;正确的做法应该是先一次把数据读到本地再进行递归生成树,你可以考虑把数据读到DataTable中再进行递归,DataTable可以使用DataView进行筛选,请参见:
    ms-help://MS.VSCC/MS.MSDNVS.2052/cpref/html/frlrfsystemdatadataviewclassrowfiltertopic.htm