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

4
我正在尝试使用.NET模拟SQL Server Management Studio中的查询分析器功能。用户将输入SQL脚本,程序将运行该脚本。如果返回结果集,则程序将将其加载到数据网格中并显示给用户。
我的问题是:是否有办法从单个脚本返回多个结果集?我知道查询分析器会运行此操作并加载多个数据网格,但据我所知,当您尝试使用SqlDataAdapter.Fill(...)进行此操作时,它仅返回脚本中的最后一个结果集。
3个回答

5

这是一个非常好的答案。它取决于我是否想使用SqlDataReader或SqlDataAdapter来捕获结果集。因为我的最终目标是将它们绑定到数据网格,所以我认为在DataSet上使用SqlDataAdapter.Fill是更好的选择,但你的建议在一般情况下更有效。谢谢。 - Lane

4
你可以调用 SqlDataAdapter.Fill 并传入一个 DataSet。每个查询结果将填充 DataSet 中的一个表:
当指定的查询返回多个结果时,每个返回查询行的结果集将放置在单独的表中。附加的结果集通过将整数值附加到指定的表名来命名(例如,“Table”,“Table1”,“Table2”等)。

非常感谢您的回答。我已经得出了相同的结论。谢谢。 - Lane

2
我认为我可能已经弄清楚这个问题了。有时将问题写出来可以帮助你更好地理解它,然后新的想法开始涌现 :)
我一直在使用SqlDataAdapter.Fill(...)方法来填充DataTable。事实证明,如果你填充一个空的DataSet,它会自动为每个返回的结果集创建一个表。所以,我可以准备一些隐藏的datagrids,当程序检测到填充的DataSet具有多个表时,我将只需从DataSet中的每个DataTable加载数据到每个datagrid中即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接