datatable - 检测 SqlDataAdapter 填充方法何时完成
问题描述
我有一个SqlDataAdapter
服务于多个 SqlCommand 的全局变量。问题有时是SqlDataAdapter
填充方法会引发错误说
There is already an open DataReader associated with this Command...
我想知道是否存在某种方法可以知道填充方法何时仍在执行?
我听说 SqlDataAdapter 在DataReader
内部使用 a 。
能得到DataReader
吗?
解决方案
“我有一个全局 SqlDataAdapter” ——那是你的错误。摒弃这个概念,并在您想要使用的时候创建一个 DataAdapter。把它放在一个using
声明中,这样你就不会忘记处理它。
此外,如果您正在缓存连接并手动打开关闭它们,也不要这样做 - 只需给适配器(您在现场制作的)一个 SQL 字符串和一个连接字符串,让它创建连接和命令对象。您唯一可能想要创建一个连接并自己打开它的情况是,如果您有很多操作要使用不同的适配器按顺序执行,可能作为事务的一部分。不要忘记打开和关闭连接并不一定与数据库建立 TCP 连接(慢) - 它是从连接池中租用并返回当前连接且可用的连接,并且是一个微不足道的操作
您尝试和微观管理的次数越多,它就会变得越糟,并且试图四处晃动,检测到这一点并等待那是a)不必要的,b)尝试在您将自己描绘成的角落里工作的混乱局面,c ) 将提供不合标准的 UI 体验。
推荐阅读
- php - Json 数组月度数据 php laravel
- python - 如何将'QUIT'命令传递给已经运行的python子进程
- java - 无法上传到 Android Studio 中的 Parse Server
- unix - 如何将两个输入通过管道传输到同一个命令?
- openimageio - OpenImageIO:以显示窗口分辨率而不是数据分辨率打开图像
- python - 缩放pygame屏幕截图
- node.js - 来自另一个 js 文件的函数不执行任何操作
- java - Java 无法解析为类型
- amazon-web-services - 使用 Cognito 用户池限制/限制 API 网关端点上用户的最佳方法?
- macos - 如何在重新启动时运行“dtrace”并保持运行以监控 MacOS 上的文件