这两种方法的主要区别是什么?在msdn网站上,它解释如下,但我不明白.
Read
将SqlDataReader推进到下一条记录.(重写DbDataReader.Read().)
NextResult
在读取批处理Transact-SQL语句的结果时,将数据读取器推进到下一个结果.(重写dbDataReader.NextResult().)
Hab*_*bib 48
如果您的语句/ proc返回多个结果集,例如,如果您select
在单个Command
对象中有两个 语句,那么您将返回两个结果集.
NextResult
用于在结果集之间移动.Read
用于在单个结果集的记录中前进.请考虑以下示例:
如果你有一个主体如下的过程:
.... Proc start
SELECT Name,Address FROM Table1
SELECT ID,Department FROM Table2
-- Proc End
Run Code Online (Sandbox Code Playgroud)
执行上述proc将产生两个结果集.一个for Table1
或first select语句,另一个用于下一个select
语句.
默认情况下,第一个结果集可用Read
.如果要移动到第二个结果集,则需要NextResult
.
请参阅:使用DataReader检索数据
来自同一链接的示例代码:使用NextResult检索多个结果集
static void RetrieveMultipleResults(SqlConnection connection)
{
using (connection)
{
SqlCommand command = new SqlCommand(
"SELECT CategoryID, CategoryName FROM dbo.Categories;" +
"SELECT EmployeeID, LastName FROM dbo.Employees",
connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.HasRows)
{
Console.WriteLine("\t{0}\t{1}", reader.GetName(0),
reader.GetName(1));
while (reader.Read())
{
Console.WriteLine("\t{0}\t{1}", reader.GetInt32(0),
reader.GetString(1));
}
reader.NextResult();
}
}
}
Run Code Online (Sandbox Code Playgroud)