![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
SqlDataReader reader = command.ExecuteReader();
以下代码示例循环访问一个 DataReader 对象,并从每个行中返回两个列。
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
if (reader.HasRows)
while (reader.Read())
Console.WriteLine("\t{0}\t{1}", reader.GetInt32(0), reader.GetString(1));
else
Console.WriteLine("No rows returned.");
reader.Close();
每次使用完 DataReader 对象后都应调用 Close 方法。
如果 Command 包含输出参数或返回值,那么在 DataReader 关闭之前,将无法访问这些输出参数或返回值。
请注意,当 DataReader 打开时,该 DataReader 将以独占方式使用 Connection。在原始 DataReader 关闭之前,将无法对 Connection 执行任何命令(包括创建另一个 DataReader)。
多个结果集
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
// Assumes that connection is a valid SqlConnection object.
SqlCommand command = new SqlCommand(
"SELECT CategoryID, CategoryName FROM dbo.Categories;" +
"SELECT EmployeeID, LastName FROM dbo.Employees", connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
do
{
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));
} while (reader.NextResult());
reader.Close();
connection.Close();