在 C# 中多次读取 SQLDataReader?

问题描述 投票:0回答:3

我相信在JAVA中我们可以将数据读取器设置为指向其结果集的第一行。我有一个包含 20 多个列的 SQLDataReader,在使用整个结果集之前,我需要预处理一些列并计算一些值。第一次读取数据读取器后是否可以重新读取数据以获取选定的列?或者我需要将结果存储在数据表中并稍后读取?

c# sql-server sqldatareader
3个回答
5
投票

来自 MSDN 文档:https://learn.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqldatareader

提供一种从 SQL Server 数据库读取只进行流的方法。

您可以一次读取一行,但一旦读取下一行,您就无法返回到上一行。

您可以按任意顺序、任意次数读取一行中的列,如果需要,还可以跳过字段。

while (reader.Read())
{
    var a = reader[2];   // you can skip fields
    var b = reader[0];   // you don't have to read the fields in order
    var c = reader[2];   // you can re-read fields
}

4
投票

不,这是不可能的。

来自 MSDN 上的

SqlDataReader

提供了一种从 SQL Server 数据库读取“只进流”行的方法。

(强调我的)

您可以将所有需要的数据读入集合中,并根据需要多次迭代副本。


1
投票
reader.ReadNext

方法。

或者,SQL 确实支持计算字段,这可能会让事情变得更简单。

但就我个人而言,我会将整个数据读入

List<T>

进行处理......

    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.