【问题标题】:SqlDataReader only returns first select in SqlCommandSqlDataReader 只返回 SqlCommand 中的第一个选择
【发布时间】:2009-07-16 09:42:36
【问题描述】:

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

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

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

我的 sql 包含,在打印语句旁边,还有不同的选择语句:

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

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

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

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

恐怕我无法使用 Process.Start 和 sql server 命令行 sqlcmd 并读取输出,但我正在寻找更多API'ish

提前致谢!

【问题讨论】:

    标签: c# sql-server-2005 text


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-19
        • 2021-06-26
        • 2019-08-16
        • 1970-01-01
        • 2013-02-06
        相关资源
        最近更新 更多