陈斌彬的技术博客

Stay foolish,stay hungry

SqlDatareader

提供一种从 SQL Server 数据库读取行的只进流的方式。

此类是继承:public class SqlDataReader : DbDataReader, IDataReader, IDisposable, IDataRecord

若要创建 SqlDataReader,必须调用 SqlCommand 对象的 ExecuteReader 方法,而不要直接使用构造函数。

在使用 SqlDataReader 时,关联的 SqlConnection 正忙于为 SqlDataReader 服务,对 SqlConnection 无法执行任何其他操作,只能将其关闭。除非调用 SqlDataReader 的 Close 方法,否则会一直处于此状态。例如,在调用 Close 之前,无法检索输出参数。

SqlDataReader 的用户可能会看到在读取数据时另一进程或线程对结果集所做的更改。但是,确切的行为与执行时间有关。

当 SqlDataReader 关闭后,只能调用 IsClosed 和 RecordsAffected 属性。尽管当 SqlDataReader 存在时可以访问 RecordsAffected 属性,但是请始终在返回 RecordsAffected 的值之前调用 Close,以保证返回精确的值。

示例

C#

privatestaticvoid ReadOrderData(string connectionString)

{

string queryString =

"SELECT OrderID, CustomerID FROM dbo.Orders;";

using (SqlConnection connection =

new SqlConnection(connectionString))

{

SqlCommand command =

new SqlCommand(queryString, connection);

connection.Open();

SqlDataReader reader = command.ExecuteReader();

// Call Read before accessing data.

while (reader.Read())

{

Console.WriteLine(String.Format("{0}, {1}",

reader[0], reader[1]));

}

// Call Close when done reading.

reader.Close();

}

}