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

时间:2010-12-21 13:57:31

标签: c# .net sql ado.net

我正在尝试使用.NET模仿SQL Server Management Studio的查询分析器部分的功能。用户将输入一个SQL脚本,程序将运行它。如果它返回结果集,程序会将其加载到数据网格中并向用户显示。

我的问题是:有没有办法从单个脚本返回多个结果集?我知道查询分析器运行它并加载多个数据网格,如果返回了几个结果集,但据我所知,当您尝试使用SqlDataAdapter.Fill(...)时,它只返回脚本中的最后一个结果集。

3 个答案:

答案 0 :(得分:5)

这将向您展示如何返回多个结果集:http://vb.net-informations.com/ado.net-dataproviders/ado.net-multiple-result-sets.htm

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

答案 1 :(得分:4)

您可以调用SqlDataAdapter.Fill传入DataSet。每个查询结果将填充DataSet中的表:

  

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

答案 2 :(得分:2)

我想我可能已经想到了这一点。有时写出问题有助于你更好地理解它,然后开始出现新的想法:)

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