首页 >数据库 >mysql教程 >为什么 `ExecuteNonQuery()` 会抛出'已经有一个打开的 DataReader...”?

为什么 `ExecuteNonQuery()` 会抛出'已经有一个打开的 DataReader...”?

Linda Hamilton
Linda Hamilton原创
2024-12-02 06:06:11295浏览

Why Does `ExecuteNonQuery()` Throw

DataReader 在连接执行期间打开

在使用 Visual Studio 2010/.Net 4.0 和 MySQL 项目时,开发人员遇到了异常,“已经有一个打开的 DataReader 与此连接关联,必须先将其关闭。”

当数据读取器打开时,相关代码尝试执行另一个 SQL 语句。具体来说,在 cmdInserttblProductFrance.ExecuteNonQuery(); 行引发异常。

出现此问题的原因是连接同时用于数据读取器和 ExecuteNonQuery 命令。根据 MSDN,不支持这种用法:

“请注意,当 DataReader 打开时,该连接仅由该 DataReader 使用。您无法为该连接执行任何命令,包括创建另一个 DataReader,直到原始 DataReader 已关闭。”

要解决此问题,请在尝试执行其他 SQL 语句之前关闭数据读取器。

以上是为什么 `ExecuteNonQuery()` 会抛出'已经有一个打开的 DataReader...”?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn