SqlDataReader只返回SqlCommand中的第一个select

jan*_*jan 4 c# text sql-server-2005

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

如果我在SQL Server Management Studio中执行此sql,我可以发送"结果到文本".我想在我的C#代码中捕获这个文本.

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

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

PRINT 'We are here'
SELECT Name FROM Table1
-- do some logic
SELECT Name, Country FROM Table1
PRINT 'We are done'
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

提前致谢!

Mat*_*lls 9

SqlDataReader应该工作.使用该Read方法遍历第一个选择的行,并NextResult移动到第二个选择的结果.像这样:

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


Dav*_*kle 6

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