我相信JAVA我们可以设置数据读取器指向它的结果集的第一行。我有一个超过20列的SQLDataReader,我需要预处理一些列并在使用整个结果集之前计算一些值。第一次读取数据读取器后,是否可以重新读取数据读取器?或者我是否需要将结果存储在数据表中并稍后从中读取?
答案 0 :(得分:4)
来自http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.aspx的MSDN文档
提供从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
}
答案 1 :(得分:2)
答案 2 :(得分:1)
也许您可以将2个查询作为sproc的一部分运行。第一个查询仅限于预先计算字段的字段,其余字段的第二个查询。然后在你的C#中使用reader.ReadNext
方法。
或者SQL确实支持计算字段,这可能会使事情变得更简单。
但我个人将整个数据读入List<T>
进行处理......