我正在尝试使用.NET模仿SQL Server Management Studio的查询分析器部分的功能。用户将输入一个SQL脚本,程序将运行它。如果它返回结果集,程序会将其加载到数据网格中并向用户显示。
我的问题是:有没有办法从单个脚本返回多个结果集?我知道查询分析器运行它并加载多个数据网格,如果返回了几个结果集,但据我所知,当您尝试使用SqlDataAdapter.Fill(...)时,它只返回脚本中的最后一个结果集。
答案 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的数据加载每个数据网格。