具有返回多个结果的查询时,我们迭代其中使用NextResult()的SqlDataReader。这样我们就可以按顺序访问结果。
有没有办法以随机/非顺序方式访问结果。例如首先跳转到第三个结果,然后跳转到第一个等等
我正在搜索是否有类似的东西rdr.GetResult(1)或解决方法。
既然有人问我为什么要这样的东西,
更新 13/6
虽然Jeroen Mostert 的回答对原因给出了深思熟虑的解释,但Think2ceCode1ce 的回答显示了解决方法的正确方向。评论中链接的内容如何附加dataset可以用于以某种async方式工作。恕我直言,如果要编写通用解决方案,这将是要走的路。但是,就我而言,我的解决方案基于数据的性质及其背后的逻辑。简而言之,(1)我使用顺序读取数据SqlDataReader; (2) 当我读取行中的第一个但逻辑 ResultSet 中的第二个时,我将一些我需要的数据存储在字典和集合中;(3) 当我正在阅读第三行,但首先是在逻辑 ResultSet 中,我正在遍历我之前构建的集合,并基于字典数据构建我的最终结果。
最终代码似乎比使用async DataAdapter. 但是,这是基于我的数据的非常具体的解决方案。
提供一种从 SQL Server 数据库读取行的只进流的方法。
https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader(v=vs.110).aspx
您需要DataAdapter用于断开连接和非顺序访问。要使用它,您只需更改 ADO.NET 代码的一部分。
代替
SqlDataReader sqlReader = sqlCmd.ExecuteReader();
Run Code Online (Sandbox Code Playgroud)
你需要
DataTable dt = new DataTable();
SqlDataAdapter sqlAdapter = new SqlDataAdapter(sqlCmd);
sqlAdapter.Fill(dt);
Run Code Online (Sandbox Code Playgroud)
如果您的 SQL 返回多个结果集,您将使用DataSet代替DataTable,然后访问像ds.Tables[index_or_name].
https://msdn.microsoft.com/en-us/library/bh8kx08z(v=vs.110).aspx
| 归档时间: |
|
| 查看次数: |
1054 次 |
| 最近记录: |