如果发生错误,using 语句会回滚数据库事务吗?

2023-12-05

我在 using 语句中有一个 IDbTransaction,但我不确定如果在 using 语句中抛出异常,它是否会回滚。我知道 using 语句将强制调用 Dispose()...但是有人知道 Rollback() 是否也是如此?

Update:另外,我是否需要像下面那样显式调用 Commit() 或者 using 语句也会处理这一问题?

我的代码看起来有点像这样:

using Microsoft.Practices.EnterpriseLibrary.Data;

...

using(IDbConnection connection = DatabaseInstance.CreateConnection())
{
    connection.Open();

    using(IDbTransaction transaction = connection.BeginTransaction())
    {
       //Attempt to do stuff in the database
       //potentially throw an exception
       transaction.Commit();
    }
}

事务类的 Dispose 方法执行回滚,而 Oracle 的类则不执行回滚。因此,从事务的角度来看,它依赖于实现。

The using另一方面,连接对象的语句将关闭与数据库的连接,或者在重置连接后将连接返回到池中。无论哪种情况,未完成的事务都应该回滚。这就是为什么异常永远不会留下活跃的交易。

另外,是的,你应该打电话Commit()明确地。

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

如果发生错误,using 语句会回滚数据库事务吗? 的相关文章

随机推荐

  • 提取 R 中最后一个正则表达式匹配

    我在用着mutate with str extract 将数据框中的字符串列压缩为单个关键字列 我的问题是其中一个字符串包含两个关键字 而第二个对我来说更重要 不过 正则表达式总是首先找到我告诉它寻找的替代方案 有办法改变这个吗 MWE 无
  • 在 ASP.Net MVC 中动态地将角色映射到控制器

    我目前正在 MVC 应用程序的过滤器中对授权角色进行硬编码 如下所示 Authorize Roles Administrator Manager 我希望最终有一种方法将角色映射到每个控制器 以便站点管理员可以分配哪些角色可以执行每组操作 s
  • 调用init方法失败;嵌套异常是 java.lang.IncompleteClassChangeError: Implementing class

    错误信息 SEVERE Exception sending context initialized event to listener instance of class org springframework web context Co
  • 将视图转换为位图而不在 Android 中显示?

    我将尝试解释我到底需要做什么 我有 3 个独立的屏幕 分别为 A B C 还有另一个屏幕称为 HomeScreen 其中所有 3 个屏幕位图都应显示在图库视图中 用户可以选择他想要进入哪个视图 我已经能够通过仅将所有代码放置在 HomeSc
  • 是否有适用于 WPF 的虚拟化 WrapPanel 可用?商业或免费的

    有可用的虚拟化 WrapPanel 吗 商业或免费的 我看过一些博客 包括 dan 的 但它似乎在我的应用程序中效果不佳 特别是当我有不同大小的子项目时 此外 即使尺寸相同 那些免费的也不能很好地工作 市场上有商业的吗 我找不到任何 请给出
  • 不接受 gnuplot-datafile 中的单列

    我想在 gnuplot Ubuntu 上为 4 6 4 中绘制一些数据 但我遇到了一个奇怪的问题 我想要绘制的数据是这样的 0 200002 1 802499 0 019630 0 026596 1 0 200004 1 782499 0
  • 递归地将 XML 添加到 TreeView 中

    我正在尝试使用 C 将节点的 XML 文件导入到 TreeView 中的相同节点结构中 我发现了很多使用单节点结构的示例 但在遍历 XML 文件并用它填充 TreeView 时遇到了很多问题 这是 XML 文件的示例
  • for 循环消除

    我想使用指数技巧消除for我的 C 11 程序中的循环 类似于强制 funroll loops 这是一个例子 template
  • 如何确定从 Java 文本文件中读取的最大值和最小值

    我正在为班级做作业 正在寻找一些有用的指导 而不是完整的解决方案 基本上 我必须编写一个 Java 程序 读取文本文件并逐行列出信息 列出行号 最后打印出最大值和最小值以及与每个值相关的年份 该文本文件包含年份和该年的温度 因此 它列出了类
  • 在sql server中生成序列

    我正在开发一个函数 该函数将采用一个小数和一个大数作为参数 并返回一个包含其间 并包括 所有内容的表 我知道我可以使用游标并增加一个变量 每次迭代将其添加到基于范围的表中 但如果可能的话 我宁愿避免使用游标 还有其他人有关于执行此操作的方法
  • 如何在js文件中写入php代码

    我的程序是我将页面划分为第一个 div 中的 div 我添加了此代码
  • 宏完成后删除文档

    我有一个 Word 2007 docm 文件 我将其作为电子邮件附件发送给用户 以便他们更新文件 宏从服务器下载文件并正确安装它们 而不是将文件作为电子邮件附件发送并相信用户能够正确安装 我会改用 VBScript 文件 但不允许我通过电子
  • JSF 验证错误,丢失值

    我有一个带有复合键的更新表单 所有复合键都显示在输出框中 因为我为每个复合键都有隐藏字段 验证错误后 这些输出框值为空 我该如何解决这个问题 我在同一页面上 所以它不需要有这些值 这确实是一种非直觉行为h inputHidden 我曾经提交
  • 获取 API 时出错/无法从方法“getHeroes”返回“List”类型的值,因为返回类型为“Future?>”

    我是 Dart Flutter 的新手 正在努力使用 API 这是我的模型文件夹中的文件 List
  • 画布上下文中的 React-chartjs-2 渐变填充错误

    我有一个react chart js2组件 我试图在填充上制作渐变 但是我遇到了一些不同的打字稿错误 并且似乎无法让它工作 该文档表示将 data 属性作为函数传递并引用画布 以便访问画布上下文以添加渐变 不幸的是 这不起作用 这是文件的代
  • SVN Repo 给出 404 not Found

    我已经在 Ubuntu 12 04 上安装了 svn 版本 1 6 17 r1128011 我在这里做了我的回购 sudo mkdir home 2nd disk svn 设置我的 etc apache2 mods enabled dav
  • 寻找一种更Pythonic的方式来访问数据库

    我有很多遵循这种模式的 python 方法 def delete session guid conn get conn cur conn cursor cur execute delete from sessions where guid
  • Facebook 视频上传 OAuthException 200 错误

    我有与此类似的代码 位于 使用 php sdk graph api 将视频上传到 facebook 在我编写的应用程序中 但昨天我开始收到 OAuthException 错误 我寻找了一个简单的视频上传示例到 Facebook 页面进行测试
  • 当我添加新数据时,列表项会发生变化...为什么?

    我有一种方法可以将文件转换为字节 以便稍后可以通过互联网发送它 无论如何 因为我计划发送大文件 所以我发送大块文件而不是发送整个文件 每个块由一个字节数组 byte 组成 我对这一切都很陌生 所以我想在发送之前将每个块保存在块列表 List
  • 如果发生错误,using 语句会回滚数据库事务吗?

    我在 using 语句中有一个 IDbTransaction 但我不确定如果在 using 语句中抛出异常 它是否会回滚 我知道 using 语句将强制调用 Dispose 但是有人知道 Rollback 是否也是如此 Update 另外