为什么在打开连接的情况下会出现“阅读器关闭时调用 HasRows 的尝试无效”?

2024-04-15

我有这个代码:

// this is managed elsewhere
SqlConnection connection =...
connection.Open();

// this is one block of code, separate from the above
using( var transaction = connection.BeginTransaction() ) {
   using( var command = connection.CreateCommand() ) {
     command.Transaction = transaction;
     command.CommandText = ...
     using( var reader = command.ExecuteReader() ) {
         if( reader.HasRows ) {
             if( reader.Read() ) {
                 //get data from the reader
             }
         }
     }
}

这段代码在大多数情况下运行得很好。然而有时——非常罕见——检索HasRows产生以下异常:

Invalid attempt to call HasRows when reader is closed.
System.InvalidOperationException
  at System.Data.SqlClient.SqlDataReader.get_HasRows()
  // my code calling HasRows listed here

我 99.5% 确定连接在那一刻是打开的。我的代码使用HasRows在阅读读者之前与 MSDN 的建议非常相似 http://msdn.microsoft.com/en-us/library/haa3afyz%28v=vs.80%29.aspx.

该异常的原因可能是什么?


这恰好是中的意外行为ExecuteReader() https://stackoverflow.com/q/14229310/57428- 很可能是一个错误。在深处ExecuteReader()发生一些随机错误,很可能是网络超时,连接关闭,然后关闭SqlDataReader就好像什么也没发生一样返回。难怪随后的电话HasRows产生异常。

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

为什么在打开连接的情况下会出现“阅读器关闭时调用 HasRows 的尝试无效”? 的相关文章

随机推荐

  • Silverlight 3:没有变化,但现在我收到“找不到页面”

    有一个工作正常的页面 我所做的唯一更改是向页面添加一个数据网格 其中还添加了 xmlns 突然间我得到了 找不到页面 检查了 UriMappings 尝试了默认导航链接 没有喜悦 Ideas 更新 答案是我有一个没有初始化集合的模拟类 请参
  • 何时使用filter_input()

    这个问题最初是在评论中提出的here https stackoverflow com questions 768442 php filter input comment 580014 Is 过滤器输入 http www php net ma
  • 在 VSCode 中每次保存时运行 rsync

    我的本地系统上有一个存储库 并正在远程服务器上测试我的更改 我正在使用 VSCode 进行开发 我希望每次保存时 rsync 都应在后台运行 并将当前本地文件中的更改与远程同步 我如何使用 VSCode 实现这一目标 我在用保存并运行 ht
  • 什么时候适合响应 HTTP 412 错误?

    我不清楚什么时候应该或不应该返回 HTTP 412 先决条件失败 Web 服务错误 我正在考虑在验证数据时使用它 例如 如果客户端 POST 的 XML 数据并且该数据缺少必需的数据元素 则以 412 和错误描述进行响应 这是否符合 HTT
  • UIImage 到 base64 字符串编码

    如何转换UIimage到base64编码的字符串 我找不到任何详细的示例或代码 我想知道你为什么没有找到你的问题 因为这是一个非常古老的问题并且可以找到here https stackoverflow com questions 39246
  • 具有自定义 PropertyDescriptor 的 PropertyGrid

    我一直在努力让自定义属性描述符按照我想要的方式使用 PropertyGrid 工作 前提 我有一个名为 Animal 的类 其中包含以下属性Age Type Location and Name 我有另一个名为 AnimalGroup 的类
  • 如何查询C++的GCC警告?

    GCC 允许使用以下语法查询特定于 C 语言的可用警告标志 g Q help warning c 向调用中添加警告标志会将它们包含在结果中 g Wall Q help warning c 然而 似乎调用是从 C 的角度完成的 我不知道如何从
  • 我无法导入textblob包

    我使用命令安装了textblobpip install 但现在我尝试导入它 但出现以下错误 ModuleNotFoundError 没有名为 textblob 的模块 我在Windows 10系统中使用Spyder from textblo
  • Draft.js (react-draft-wysiwyg):从编辑器组件外部进行文本更新不起作用

    我正在尝试将文本从调用组件更新到编辑器组件中 我用props从调用者传递文本 但是当文本更改 内容编辑器中更新属性 时 编辑器组件中的文本不是 下面是调用组件的代码
  • 如何在运行时跳过整个 Python“单元测试”模块?

    我想要我的Pythonunittestmodule 告诉测试运行者在某些情况下完全跳过它 例如无法导入模块或找到关键资源 我可以用 unittest skipIf 跳过单元测试 TestCase课程 但我如何跳过整个模块 对每个类应用跳过是
  • 在 wxPython 的面板之间拖动按钮

    有谁知道一个示例 其中展示了如何在 wxPython 中将按钮从一个面板拖动到另一个面板 我在面板中创建了一个位图按钮 我希望能够将其拖到另一个面板并将我放在那里 我还没有找到任何使用按钮的示例 只有文本和文件 我正在使用最新版本的 Pyt
  • Pandas 使用“更大”的 DataFrames 附加性能 concat/append

    问题 我将数据存储在 csv 文件中 其中包含以下列 data id value 我有 15 个文件 每个文件包含大约 10 20mio 行 每个 csv 文件涵盖一个不同的时期 因此时间索引不重叠 但列是重叠的 新 ID 不时输入 旧 I
  • 如何为“转换”状态机定义触发器的枚举?

    作为不相关的后续这个答案 https stackoverflow com a 68269299 913098 它使用以下工作代码 from transitions import Machine from transitions import
  • Eclipse 上下文帮助

    现在我可以在 Eclipse WizardDialog Editor 中注册上下文帮助 1 我创建了一个help contexts xml 文件
  • 如何在animationDidStop委托中识别CAAnimation?

    我遇到了一个问题 我有一系列重叠的 CATransition CAAnimation 序列 所有这些序列我都需要在动画停止时执行自定义操作 但我只想要一个动画DidStop 的委托处理程序 但是 我遇到了一个问题 似乎没有一种方法可以唯一地
  • 在 C# 中以编程方式创建 DHCP 预留

    我被分配的任务是创建一个应用程序 该应用程序接收 MAC 地址并为该 MAC 地址创建 DHCP 保留 NET 中是否有内置的 API 可以轻松完成此任务 当我为基础设施编写应用程序时 Windows 2000 资源工具包中有一个名为 Dh
  • Python,如何在每一行中打印字典键及其值?

    请参阅下图以供参考 gt gt gt for key in d for item in d key print key item 1 2 1 3 2 4 2 5
  • 匿名命名空间:它们真的那么好吗?

    我一直在使用static关键字时间较长 用于定义内部链接 后来 我改用 C 风格 将本地事物包装在匿名命名空间中 然而 现在当我使用匿名命名空间多年后 我开始认为static关键字更容易使用 一个常见的问题是我有这样的模式 namespac
  • 不再支持 Xlsx 文件。设置新的 BW2 项目的解决方案?

    经过几个月的休息后 我本周恢复了 BW2 的计算 由于 XLRD 的更改 我的旧笔记本不再工作 它不再读取 xlsx 如果我理解的话 这个帖子 https exerror com xlrd biffh xlrderror excel xls
  • 为什么在打开连接的情况下会出现“阅读器关闭时调用 HasRows 的尝试无效”?

    我有这个代码 this is managed elsewhere SqlConnection connection connection Open this is one block of code separate from the ab