我正在使用SqlCommand在SqlServer2005数据库上执行sql语句。 (我也试过DbCommand。)
如果我在SQL Server Management Studio中执行此sql,我可以将“Results to Text”发送给我。 我想在我的C#代码中捕获这个文本。
我的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 。
提前致谢!
答案 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()才能获得第二组结果。