SqlDataReader
提供一种从SQL Server数据库读取行的只进流的方式。无法继承此类。
命名空间:System.Data.SqlClient
程序集:System.Data(在system.data.dll中)
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();
}
}
继承层次结构:
System.Object
System.MarshalByRefObject
System.Data.Common.DbDataReader
System.Data.SqlClient.SqlDataReader