SqlDataAdapter填充方法完成时检测



我有一个全局SqlDataAdapter,它为多个SqlCommand提供服务。问题是有时SqlDataAdapter填充方法会引发错误,称

There is already an open DataReader associated with this Command...

我想知道是否有某种方法可以知道填充方法何时仍在执行?

我听说SqlDataAdapter在内部使用DataReader

能拿到DataReader吗?

"我有一个全局SqlDataAdapter">-这是你的错误。去掉这个概念,只要你想使用DataAdapter,就制作一个DataAdapter。把它放在using语句中,这样你就不会忘记处理它

此外,如果您正在缓存连接并手动打开和关闭它们,也不要这样做——只需给适配器(您当场创建的(一个SQL字符串和一个连接字符串,让它创建连接和命令对象。您可能只想创建一个连接并自己打开它,如果您有很多操作要使用不同的适配器按顺序执行,可能是作为事务的一部分。不要忘记,打开和关闭连接并不一定是建立到数据库的TCP连接(缓慢(——它是从连接池中租用并返回当前连接的可用连接,这是一个琐碎的操作

你越是试图对其进行微观管理,它就会变得越糟糕,并试图四处摇摆,检测到这一点并等待它是a(不必要的,b(试图在你把自己描绘成的角落里工作时一团糟,c(会给人一种不合格的UI体验。

最新更新