gpt4 book ai didi

c# - SqlDataReader 内部的 SqlDataReader

转载 作者:可可西里 更新时间:2023-11-01 08:36:54 25 4
gpt4 key购买 nike

如何在另一个 SqlDataReader 中实现一个 SqlDataReader

我的问题是我有一个 SqlDataReader。我正在发出 while (reader.read()) 并且在 while 循环内我必须创建另一个 SqlDataReader 以从数据库中读取。但是我收到关于连接已经打开的异常。

那么解决我的问题的最佳方法是什么?

编辑:

我正在使用 clr 创建我的存储过程。我试图将 MultipleActiveResultSets=true; 放在 clr 和项目的连接字符串中,当我在 SQL Server 上测试了我的存储过程:

System.InvalidOperationException: There is already an open DataReader associated with this Command which must be closed first.

最佳答案

您需要有两个嵌套数据读取器,这需要 ADO.NET“MARS”功能 - 多个事件结果集。

这从 ADO.NET 2.0 开始可用,并且需要在连接字符串中进行特定设置(MultipleActiveResultSets=true;):

Server=.\SQLEXPRESS;Database=master;Integrated Security=SSPI;
MultipleActiveResultSets=true;

查看此 blog post进行精彩的讨论。

一旦你有了这个,你应该能够在代码中的同一个 SqlConnection 上共享多个 SqlDataReader,并且可以独立使用它们。

更新:这个 blog post here提到 MARS 功能在 SQL CLR 环境中不可用 :-( 所以这在 SQL CLR 存储过程中不起作用....

关于c# - SqlDataReader 内部的 SqlDataReader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2355801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com