SqlDataReader只返回SqlCommand中的第一个select

时间:2009-07-16 09:42:36

标签: c# sql-server-2005 text

我正在使用SqlCommand在SqlServer2005数据库上执行sql语句。 (我也试过DbCommand。)

如果我在SQL Server Management Studio中执行此sql,我可以将“Results to Text”发送给我。 我想在我的C#代码中捕获这个文本。

Thisthis是相关问题,但不一样:

我的sql在print语句旁边还包含不同的select语句:

PRINT 'We are here'
SELECT Name FROM Table1
-- do some logic
SELECT Name, Country FROM Table1
PRINT 'We are done'

(“ Strange sql ”我听到你说。我知道,但这就是我们的长期维护脚本的样子。)

我可以使用SqlConnection.InfoMessage单独捕获PRINT语句。

但是SqlDataReader似乎不支持2个select语句,两者都有不同的FieldCount。

我担心我会遇到Process.Start和sql server命令行sqlcmd并读取输出,但我正在寻找更多 API'ish

提前致谢!

2 个答案:

答案 0 :(得分:9)

SqlDataReader应该可以工作。使用Read方法浏览第一个选择的行,NextResult移动到第二个选择的结果。像这样:

do {
    while (dataReader.Read()) {
        //... process one row
    }
} while (dataReader.NextResult()) //go to the results of the next SELECT        

答案 1 :(得分:6)

您必须在DataReader上调用.NextResult()才能获得第二组结果。