SqlDataReader Class
Provides a way of reading a forward-only stream of rows from a SQL Server database. This class cannot be inherited.
System.MarshalByRefObject
System.Data.Common.DbDataReader
System.Data.SqlClient.SqlDataReader
Assembly: System.Data (in System.Data.dll)
The SqlDataReader type exposes the following members.
Name | Description | |
---|---|---|
![]() | Connection | Gets the SqlConnection associated with the SqlDataReader. |
![]() | Depth | Gets a value that indicates the depth of nesting for the current row. (Overrides DbDataReader.Depth.) |
![]() | FieldCount | Gets the number of columns in the current row. (Overrides DbDataReader.FieldCount.) |
![]() | HasRows | Gets a value that indicates whether the SqlDataReader contains one or more rows. (Overrides DbDataReader.HasRows.) |
![]() | IsClosed | Retrieves a Boolean value that indicates whether the specified SqlDataReader instance has been closed. (Overrides DbDataReader.IsClosed.) |
![]() | Item(Int32) | Gets the value of the specified column in its native format given the column ordinal. (Overrides DbDataReader.Item(Int32).) |
![]() | Item(String) | Gets the value of the specified column in its native format given the column name. (Overrides DbDataReader.Item(String).) |
![]() | RecordsAffected | Gets the number of rows changed, inserted, or deleted by execution of the Transact-SQL statement. (Overrides DbDataReader.RecordsAffected.) |
![]() | VisibleFieldCount | Gets the number of fields in the SqlDataReader that are not hidden. (Overrides DbDataReader.VisibleFieldCount.) |
Name | Description | |
---|---|---|
![]() | Close | Closes the SqlDataReader object. (Overrides DbDataReader.Close.) |
![]() | CreateObjRef | Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object. (Inherited from MarshalByRefObject.) |
![]() | Dispose | Releases all resources used by the current instance of the DbDataReader class. (Inherited from DbDataReader.) |
![]() | Dispose(Boolean) | Releases the managed resources used by the DbDataReader and optionally releases the unmanaged resources. (Inherited from DbDataReader.) |
![]() | Equals(Object) | Determines whether the specified Object is equal to the current Object. (Inherited from Object.) |
![]() | Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) |
![]() | GetBoolean | Gets the value of the specified column as a Boolean. (Overrides DbDataReader.GetBoolean(Int32).) |
![]() | GetByte | Gets the value of the specified column as a byte. (Overrides DbDataReader.GetByte(Int32).) |
![]() | GetBytes | Reads a stream of bytes from the specified column offset into the buffer an array starting at the given buffer offset. (Overrides DbDataReader.GetBytes(Int32, Int64, Byte(), Int32, Int32).) |
![]() | GetChar | Gets the value of the specified column as a single character. (Overrides DbDataReader.GetChar(Int32).) |
![]() | GetChars | Reads a stream of characters from the specified column offset into the buffer as an array starting at the given buffer offset. (Overrides DbDataReader.GetChars(Int32, Int64, Char(), Int32, Int32).) |
![]() | GetData | Returns a DbDataReader object for the requested column ordinal. (Inherited from DbDataReader.) |
![]() | GetDataTypeName | Gets a string representing the data type of the specified column. (Overrides DbDataReader.GetDataTypeName(Int32).) |
![]() | GetDateTime | Gets the value of the specified column as a DateTime object. (Overrides DbDataReader.GetDateTime(Int32).) |
![]() | GetDateTimeOffset | Retrieves the value of the specified column as a DateTimeOffset object. |
![]() | GetDbDataReader | Returns a DbDataReader object for the requested column ordinal that can be overridden with a provider-specific implementation. (Inherited from DbDataReader.) |
![]() | GetDecimal | Gets the value of the specified column as a Decimal object. (Overrides DbDataReader.GetDecimal(Int32).) |
![]() | GetDouble | Gets the value of the specified column as a double-precision floating point number. (Overrides DbDataReader.GetDouble(Int32).) |
![]() | GetEnumerator | Returns an IEnumerator that iterates through the SqlDataReader. (Overrides DbDataReader.GetEnumerator.) |
![]() | GetFieldType | Gets the Type that is the data type of the object. (Overrides DbDataReader.GetFieldType(Int32).) |
![]() | GetFloat | Gets the value of the specified column as a single-precision floating point number. (Overrides DbDataReader.GetFloat(Int32).) |
![]() | GetGuid | Gets the value of the specified column as a globally unique identifier (GUID). (Overrides DbDataReader.GetGuid(Int32).) |
![]() | GetHashCode | Serves as a hash function for a particular type. (Inherited from Object.) |
![]() | GetInt16 | Gets the value of the specified column as a 16-bit signed integer. (Overrides DbDataReader.GetInt16(Int32).) |
![]() | GetInt32 | Gets the value of the specified column as a 32-bit signed integer. (Overrides DbDataReader.GetInt32(Int32).) |
![]() | GetInt64 | Gets the value of the specified column as a 64-bit signed integer. (Overrides DbDataReader.GetInt64(Int32).) |
![]() | GetLifetimeService | Retrieves the current lifetime service object that controls the lifetime policy for this instance. (Inherited from MarshalByRefObject.) |
![]() | GetName | Gets the name of the specified column. (Overrides DbDataReader.GetName(Int32).) |
![]() | GetOrdinal | Gets the column ordinal, given the name of the column. (Overrides DbDataReader.GetOrdinal(String).) |
![]() | GetProviderSpecificFieldType | Gets an Object that is a representation of the underlying provider-specific field type. (Overrides DbDataReader.GetProviderSpecificFieldType(Int32).) |
![]() | GetProviderSpecificValue | Gets an Object that is a representation of the underlying provider specific value. (Overrides DbDataReader.GetProviderSpecificValue(Int32).) |
![]() | GetProviderSpecificValues | Gets an array of objects that are a representation of the underlying provider specific values. (Overrides DbDataReader.GetProviderSpecificValues(Object()).) |
![]() | GetSchemaTable | Returns a DataTable that describes the column metadata of the SqlDataReader. (Overrides DbDataReader.GetSchemaTable.) |
![]() | GetSqlBinary | Gets the value of the specified column as a SqlBinary. |
![]() | GetSqlBoolean | Gets the value of the specified column as a SqlBoolean. |
![]() | GetSqlByte | Gets the value of the specified column as a SqlByte. |
![]() | GetSqlBytes | Gets the value of the specified column as SqlBytes. |
![]() | GetSqlChars | Gets the value of the specified column as SqlChars. |
![]() | GetSqlDateTime | Gets the value of the specified column as a SqlDateTime. |
![]() | GetSqlDecimal | Gets the value of the specified column as a SqlDecimal. |
![]() | GetSqlDouble | Gets the value of the specified column as a SqlDouble. |
![]() | GetSqlGuid | Gets the value of the specified column as a SqlGuid. |
![]() | GetSqlInt16 | Gets the value of the specified column as a SqlInt16. |
![]() | GetSqlInt32 | Gets the value of the specified column as a SqlInt32. |
![]() | GetSqlInt64 | Gets the value of the specified column as a SqlInt64. |
![]() | GetSqlMoney | Gets the value of the specified column as a SqlMoney. |
![]() | GetSqlSingle | Gets the value of the specified column as a SqlSingle. |
![]() | GetSqlString | Gets the value of the specified column as a SqlString. |
![]() | GetSqlValue | Returns the data value in the specified column as a SQL Server type. |
![]() | GetSqlValues | Fills an array of Object that contains the values for all the columns in the record, expressed as SQL Server types. |
![]() | GetSqlXml | Gets the value of the specified column as an XML value. |
![]() | GetString | Gets the value of the specified column as a string. (Overrides DbDataReader.GetString(Int32).) |
![]() | GetTimeSpan | Retrieves the value of the specified column as a TimeSpan object. |
![]() | GetType | Gets the Type of the current instance. (Inherited from Object.) |
![]() | GetValue | Gets the value of the specified column in its native format. (Overrides DbDataReader.GetValue(Int32).) |
![]() | GetValues | Populates an array of objects with the column values of the current row. (Overrides DbDataReader.GetValues(Object()).) |
![]() | InitializeLifetimeService | Obtains a lifetime service object to control the lifetime policy for this instance. (Inherited from MarshalByRefObject.) |
![]() | IsCommandBehavior | Determines whether the specified CommandBehavior matches that of the SqlDataReader . |
![]() | IsDBNull | Gets a value that indicates whether the column contains non-existent or missing values. (Overrides DbDataReader.IsDBNull(Int32).) |
![]() | MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) |
![]() | MemberwiseClone(Boolean) | Creates a shallow copy of the current MarshalByRefObject object. (Inherited from MarshalByRefObject.) |
![]() | NextResult | Advances the data reader to the next result, when reading the results of batch Transact-SQL statements. (Overrides DbDataReader.NextResult.) |
![]() | Read | Advances the SqlDataReader to the next record. (Overrides DbDataReader.Read.) |
![]() | ToString | Returns a string that represents the current object. (Inherited from Object.) |
To create a SqlDataReader, you must call the ExecuteReader method of the SqlCommand object, instead of directly using a constructor.
While the SqlDataReader is being used, the associated SqlConnection is busy serving the SqlDataReader, and no other operations can be performed on the SqlConnection other than closing it. This is the case until the Close method of the SqlDataReader is called. For example, you cannot retrieve output parameters until after you call Close.
Changes made to a result set by another process or thread while data is being read may be visible to the user of the SqlDataReader. However, the precise behavior is timing dependent.
IsClosed and RecordsAffected are the only properties that you can call after the SqlDataReader is closed. Although the RecordsAffected property may be accessed while the SqlDataReader exists, always call Close before returning the value of RecordsAffected to guarantee an accurate return value.
![]() |
---|
For optimal performance, SqlDataReader avoids creating unnecessary objects or making unnecessary copies of data. Therefore, multiple calls to methods such as GetValue return a reference to the same object. Use caution if you are modifying the underlying value of the objects returned by methods such as GetValue. |
The following example creates a SqlConnection, a SqlCommand, and a SqlDataReader. The example reads through the data, writing it out to the console window. The code then closes the SqlDataReader. The SqlConnection is closed automatically at the end of the using code block.
Option Explicit On Option Strict On Imports System.Data Imports System.Data.SqlClient Module Module1 Sub Main() Dim str As String = "Data Source=(local);Initial Catalog=Northwind;" _ & "Integrated Security=SSPI;" ReadOrderData(str) End Sub Private Sub ReadOrderData(ByVal connectionString As String) Dim queryString As String = _ "SELECT OrderID, CustomerID FROM dbo.Orders;" Using connection As New SqlConnection(connectionString) Dim command As New SqlCommand(queryString, connection) connection.Open() Dim reader As SqlDataReader = command.ExecuteReader() ' Call Read before accessing data. While reader.Read() ReadSingleRow(CType(reader, IDataRecord)) End While ' Call Close when done reading. reader.Close() End Using End Sub Private Sub ReadSingleRow(ByVal record As IDataRecord) Console.WriteLine(String.Format("{0}, {1}", record(0), record(1))) End Sub End Module
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.