C# 使用T-SQL返回多个结果集

C# 使用T-SQL返回多个结果集,c#,.net,sql,ado.net,C#,.net,Sql,Ado.net,我试图使用.NET模拟SQLServerManagementStudio中查询分析器的功能。用户将输入一个SQL脚本,程序将运行它。如果它返回一个结果集,程序将把它加载到数据网格中并显示给用户 我的问题是:有没有一种方法可以从单个脚本返回多个结果集?我知道如果返回多个结果集,QueryAnalyzer会运行此操作并加载多个数据网格,但据我所知,当您尝试使用SqlDataAdapter.Fill(…)执行此操作时,它只返回脚本中的最后一个结果集 这将向您展示如何返回多个结果集: 使用sqlRead

我试图使用.NET模拟SQLServerManagementStudio中查询分析器的功能。用户将输入一个SQL脚本,程序将运行它。如果它返回一个结果集,程序将把它加载到数据网格中并显示给用户


我的问题是:有没有一种方法可以从单个脚本返回多个结果集?我知道如果返回多个结果集,QueryAnalyzer会运行此操作并加载多个数据网格,但据我所知,当您尝试使用SqlDataAdapter.Fill(…)执行此操作时,它只返回脚本中的最后一个结果集

这将向您展示如何返回多个结果集:

使用
sqlReader.NextResult()
方法循环不同的结果集。然后可以使用
sqlReader.Read()
获取该结果集中的每条记录

您可以调用传入数据集。每个查询结果将填充数据集中的一个表:

当指定的查询返回多个结果时,返回查询的每一行的结果集都放在单独的表中。通过将整数值附加到指定的表名(例如,“table”、“Table1”、“Table2”等)来命名其他结果集


我想我可能已经弄明白了。有时候,把问题写出来有助于你更好地理解它,然后新的想法就会出现:)


我一直在使用SqlDataAdapter.Fill(…)方法来填充数据表。事实证明,如果填充一个空数据集,它将为返回的每个结果集自动创建一个表。因此,我可以手头有一些隐藏的数据网格,当程序检测到填充的数据集有多个表时,我将用数据集中每个数据表的数据加载每个数据网格。

这是一个非常好的答案。这取决于我是想使用SqlDataReader还是SqlDataAdapter捕获结果集。因为我的最终目标是将它们绑定到datagrids,所以我认为使用SqlDataAdapter.Fill填充数据集是一个更好的选择,但您的建议总体上更有效。非常感谢你的回答。我也得出了同样的结论。谢谢