日期:2014-05-18  浏览次数:21114 次

关于递归中连接数据库的问题,请教高手
用C#写了一个递归方法,要计算对一个单位考评的成绩
考评成绩的组成是该单位的成绩和其下属单位的平均成绩各占一部分比例
而其下属单位也可能会有下属单位,计算方式与上面一样,只是根据其级别不同所占比率不一样
方法参数一个是单位ID,另一个是层次数
我的递归思路是根据单位ID在数据库中查找子单位,进行判断
若没有子单位,则返回该单位成绩除以层次数乘以比例
若有子单位,则按照计算公式返回该单位的成绩
由于在递归过程中要获取该单位的各项细节情况,进行了不少数据库的连接,结果一到要执行递归的时候,程序不进行处理。返回的结果都是非数字
刚看到有人发过贴说在递归中连接数据库是大忌,请问这究竟要如何解决呢

------解决方案--------------------
进行了不少数据库的连接
=======================>
这样确实不太可行。把连接池里面的连接都用完了,程序就无法正常运行了。

把几个重要的字段数据从数据库里读出来保存到DataTable中,用DataTable的Select方法
------解决方案--------------------
按楼上的,
全部读出再foreach
如果数据很大,分段读取

------解决方案--------------------
如果不使用事务,把连接作为一个参数来传递,不论递归多少次,都使用这一个连接。