SqlDataAdapter.Dispose 实际上是否关闭关联的 SqlConnection?

2024-03-15

有谁知道 SqlDataAdapter.Dispose 方法是否实际关闭或处置任何 SqlConnections?我加载了 Reflector,发现 SqlDataAdapter 继承自 DbDataAdapter。如果我反汇编并查看该类中的 dispose 方法,似乎没有任何 SqlConnections 的处置。我想我可以为此编写一个测试,但我想我会问一下是否有人对此有任何见解。


首先要注意的是,DataAdapter 在某些情况下会管理和关闭您的连接。例如,如果您使用 DataAdapter,您可能正在使用 DataTable/DataSet 进行操作.Fill() and .Update()功能。

来自.Fill() docs https://learn.microsoft.com/en-us/dotnet/api/system.data.common.dataadapter.fill:

与 SELECT 语句关联的连接对象必须有效,但不需要打开。如果连接在调用 Fill 之前关闭,则会打开该连接以检索数据,然后关闭。如果连接在调用 Fill 之前打开,它将保持打开状态。

The .Update() docs https://learn.microsoft.com/en-us/dotnet/api/system.data.common.dataadapter.update根本不提及任何有关连接的内容,因此我希望需要手动管理它。

您具体询问了Dispose()方法。喜欢Update(), the Dispose() docs http://msdn.microsoft.com/en-us/library/3cc9y48w.aspx没有具体提及连接,所以我希望需要手动关闭它。

最后,我们可以稍微改进 Bob King 的代码,如下所示:

Using conn as New SqlConnection(""), _
      adapter as New SqlDataAdapter() With {.Connection = conn}
    ' Do stuff
End Using

或者在 C# 中:

using (SqlConnection conn = new SqlConnection(""))
using (SqlDataAdapter adapter = new SqlDataAdapter() {Connection = conn})
{
    // Do stuff
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SqlDataAdapter.Dispose 实际上是否关闭关联的 SqlConnection? 的相关文章

  • 如何处理剪贴板阻塞和其他异常情况

    在过去的几个小时中 我一直在追踪一个相当具体的错误 该错误是由于另一个应用程序打开了剪贴板而发生的 本质上 由于剪贴板是共享资源 根据 为什么我的共享剪贴板不起作用 http blogs msdn com rds archive 2006
  • 在.net中的lock语句中调用Thread.Sleep()

    我想知道在已经获取监视器的线程上调用 Thread Sleep 是否会在进入睡眠状态之前释放锁 object o new object Montior Enter o Thread Sleep 1000 Monitor Exit o 当线程
  • 当绑定值为 null 时出现 WPF 日期选择器验证错误

    我有一个 WPF 应用程序 其中使用绑定到实体框架 带有 SQL Server 实体的日期字段的日期选择器 我将其绑定如下
  • 找不到文件异常..但它就在那里

    嘿 这将是那些愚蠢的问题之一 我试图在本地系统上获取一个文件 但我不断收到FileNotFoundException thrown 请有人纠正我 if File Exists C logs hw healthways prod 2009 0
  • 获取字母数字值的 Max()

    我有一个包含字母数字 ID 的字典 例如 a10a10 和 d10a9 我想要其中最大的 ID 意思是 9 当我使用以下代码时 d10a9 是 MAX 因为 9 排在 10 之前 var lsd new Dictionary
  • MVC3 和实体框架

    我的问题很简单 将 edmxMVC3 项目的 Web 应用程序的模型文件夹中的文件吗 我的答案非常简单 不要用数据访问逻辑和数据建模搞乱表示层 整个 MVC 应用程序 Visual Studio 解决方案中从下到上至少有 4 个项目 1 P
  • async wait 在调用异步方法时返回 Task> 而不是 List

    我正在尝试了解 async wait 的用法 并且研究了一些博客文章 现在我已经编写了一个测试代码 但它没有按照我期望的方式工作 我有一个返回列表的方法 private List
  • 正则表达式删除某些字符周围不需要的空格

    我正在尝试从 JavaScript 文件中删除一些不需要的空格 并在将文件发送到客户端之前使用 C 和 Regex 组合文件 我有一个JavascriptHandler处理 js 文件 效果很好 这是我用来 打包 JavaScript 的函
  • 如何将 Metro 应用部署到桌面?

    我正在尝试将我的 C 应用程序部署到我的 Windows 8 Metro 桌面 我可以在 bin 文件夹中看到部署的文件 但是当我尝试打开它们时 出现以下错误 该应用程序只能在 AppContainer 的上下文中运行 我检查了属性上下文菜
  • 在 C# 中实现动态代理的最佳方法是什么?

    我需要在 C 中创建动态代理 我希望这个类包装另一个类 并采用它的公共接口 转发对这些函数的调用 class MyRootClass public virtual void Foo Console Out WriteLine Foo int
  • 多个 Visual Studio 项目抱怨临时文件丢失,因此无法打开。错误代码 &H80070003

    我在终端服务器上运行 Visual Studio 2010 并且已经运行了一段时间 问题相对较少 今天早上 我启动了我的电脑 在英国的长周末期间 似乎出现了以下问题 我有很多项目 但不是我的所有项目 也不是给定解决方案中的所有项目 抱怨无法
  • 具有用于角色授权的空间的 AD 组

    我正在尝试获得与 AD 组合作的角色授权 然而 由于它包含空格 它似乎不起作用 我尝试过没有空格的 AD 组 它们工作得很好
  • 如何在.NET 中编写安全/正确的多线程代码?

    今天我必须修复一些使用线程的旧 VB NET 1 0 代码 问题在于从工作线程而不是 UI 线程更新 UI 元素 我花了一些时间才发现可以使用 InvokeRequired 断言来查找问题 除了上面提到的并发修改问题之外 还可能遇到死锁 竞
  • 使用 AesManaged“填充无效且无法删除”

    我正在尝试使用 AesManaged 进行简单的加密 解密 但在尝试关闭解密流时不断出现异常 这里的字符串被正确加密和解 密 然后在 Console WriteLine 打印正确的字符串后 我收到 CryptographicExceptio
  • 发生错误。", ExceptionMessage: "提供的 'HttpContent' 实例无效

    尝试将文件添加到 http 休息调用时出现此错误 responseJson 消息 发生错误 ExceptionMessage 提供了无效的 HttpContent 实例 它确实 正在使用 多部分 参数名称 内容 异常类型 System Ar
  • 使用32位应用程序获取syswow64目录

    我正在尝试在系统目录中查找文件 问题是当使用 Environment SystemDirectory 在 x64 计算机上 我仍然获得 System32 目录 而不是 Systemwow64 目录 我需要在 x86 机器上获取 System
  • 专家 C#/.Net/WPF 开发人员应该了解哪些知识? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 无论表单上的焦点控件如何,如何捕获 Keys.F1?

    我使用了 KeyDown 事件和一些简单的代码 例如if e KeyCode Keys F1 捕获在表单上按下 F1 但如果表单上有一些文本框 或者表单上有一些带有 Dock Fill 的电子表格 则上面的代码将毫无用处并且不执行任何操作
  • lambda 表达式是多线程的吗?

    lambda 表达式是多线程的吗 假设当你将数学公式编写为 lambda 方法时 当你将其传递给另一个方法时 它会是多线程的吗 不是100 清楚你问的是什么 您是否想问 lambda 是否自然地在不同的线程上运行 如果是这样 则它们只是 S
  • 使用 LINQ to SQL 的 .NET 架构的最佳设计实践(DAL 必要吗?我们真的可以使用 POCO吗?要采用的设计模式吗?)

    我避免在 net arch n 层架构上编写看起来像是另一个线程的内容 但请耐心等待 希望我和其他人一样 在选择用于企业应用程序的架构时 考虑到当今的趋势和新兴技术 仍然没有 100 满意或不清楚应采取的最佳方法 我想我正在寻求大众社区对方

随机推荐