C# SqlDataReader仅返回SqlCommand中的第一个选择

C# SqlDataReader仅返回SqlCommand中的第一个选择,c#,sql-server-2005,text,C#,Sql Server 2005,Text,我正在使用来在SqlServer2005数据库上执行sql语句。(我也试过了。) 如果我在SQLServerManagementStudio中执行此sql,我可以将“结果发送到文本”。 我想在我的C#代码中捕获此文本 和是相关的问题,但不相同: “我的sql”在“打印”语句旁边还包含不同的select语句: PRINT 'We are here' SELECT Name FROM Table1 -- do some logic SELECT Name, Country FROM Table1 P

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

如果我在SQLServerManagementStudio中执行此sql,我可以将“结果发送到文本”。 我想在我的C#代码中捕获此文本

和是相关的问题,但不相同:

“我的sql”在“打印”语句旁边还包含不同的select语句:

PRINT 'We are here'
SELECT Name FROM Table1
-- do some logic
SELECT Name, Country FROM Table1
PRINT 'We are done'
(“奇怪的sql”我听你说。我知道,但这就是我们长期使用的维护脚本的样子。)

我可以使用SqlConnection.InfoMessage单独捕获打印语句

但是SqlDataReader似乎不支持两个select语句,这两个语句都具有不同的FieldCount

恐怕我被Process.Start和sql server命令行sqlcmd卡住了,无法读取输出,但我正在寻找更像API的东西


提前谢谢

您必须调用DataReader才能获得第二组结果。

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

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