6 out of 12 rated this helpful - Rate this topic

SqlDataReader Class

Provides a way of reading a forward-only stream of rows from a SQL Server database. This class cannot be inherited.

System.Object
  System.MarshalByRefObject
    System.Data.Common.DbDataReader
      System.Data.SqlClient.SqlDataReader

Namespace:  System.Data.SqlClient
Assembly:  System.Data (in System.Data.dll)
public class SqlDataReader : DbDataReader, 
	IDataReader, IDisposable, IDataRecord

The SqlDataReader type exposes the following members.

  Name Description
Protected property Connection Gets the SqlConnection associated with the SqlDataReader.
Public property Depth Gets a value that indicates the depth of nesting for the current row. (Overrides DbDataReader.Depth.)
Public property FieldCount Gets the number of columns in the current row. (Overrides DbDataReader.FieldCount.)
Public property HasRows Gets a value that indicates whether the SqlDataReader contains one or more rows. (Overrides DbDataReader.HasRows.)
Public property IsClosed Retrieves a Boolean value that indicates whether the specified SqlDataReader instance has been closed. (Overrides DbDataReader.IsClosed.)
Public property Item[Int32] Gets the value of the specified column in its native format given the column ordinal. (Overrides DbDataReader.Item[Int32].)
Public property Item[String] Gets the value of the specified column in its native format given the column name. (Overrides DbDataReader.Item[String].)
Public property RecordsAffected Gets the number of rows changed, inserted, or deleted by execution of the Transact-SQL statement. (Overrides DbDataReader.RecordsAffected.)
Public property VisibleFieldCount Gets the number of fields in the SqlDataReader that are not hidden. (Overrides DbDataReader.VisibleFieldCount.)
Top
  Name Description
Public method Close Closes the SqlDataReader object. (Overrides DbDataReader.Close().)
Public method 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.)
Public method Dispose() Releases all resources used by the current instance of the DbDataReader class. (Inherited from DbDataReader.)
Protected method Dispose(Boolean) Releases the managed resources used by the DbDataReader and optionally releases the unmanaged resources. (Inherited from DbDataReader.)
Public method Equals(Object) Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected method Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public method GetBoolean Gets the value of the specified column as a Boolean. (Overrides DbDataReader.GetBoolean(Int32).)
Public method GetByte Gets the value of the specified column as a byte. (Overrides DbDataReader.GetByte(Int32).)
Public method 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).)
Public method GetChar Gets the value of the specified column as a single character. (Overrides DbDataReader.GetChar(Int32).)
Public method 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).)
Public method GetData Returns a DbDataReader object for the requested column ordinal. (Inherited from DbDataReader.)
Public method GetDataTypeName Gets a string representing the data type of the specified column. (Overrides DbDataReader.GetDataTypeName(Int32).)
Public method GetDateTime Gets the value of the specified column as a DateTime object. (Overrides DbDataReader.GetDateTime(Int32).)
Public method GetDateTimeOffset Retrieves the value of the specified column as a DateTimeOffset object.
Protected method GetDbDataReader Returns a DbDataReader object for the requested column ordinal that can be overridden with a provider-specific implementation. (Inherited from DbDataReader.)
Public method GetDecimal Gets the value of the specified column as a Decimal object. (Overrides DbDataReader.GetDecimal(Int32).)
Public method GetDouble Gets the value of the specified column as a double-precision floating point number. (Overrides DbDataReader.GetDouble(Int32).)
Public method GetEnumerator Returns an IEnumerator that iterates through the SqlDataReader. (Overrides DbDataReader.GetEnumerator().)
Public method GetFieldType Gets the Type that is the data type of the object. (Overrides DbDataReader.GetFieldType(Int32).)
Public method GetFloat Gets the value of the specified column as a single-precision floating point number. (Overrides DbDataReader.GetFloat(Int32).)
Public method GetGuid Gets the value of the specified column as a globally unique identifier (GUID). (Overrides DbDataReader.GetGuid(Int32).)
Public method GetHashCode Serves as a hash function for a particular type. (Inherited from Object.)
Public method GetInt16 Gets the value of the specified column as a 16-bit signed integer. (Overrides DbDataReader.GetInt16(Int32).)
Public method GetInt32 Gets the value of the specified column as a 32-bit signed integer. (Overrides DbDataReader.GetInt32(Int32).)
Public method GetInt64 Gets the value of the specified column as a 64-bit signed integer. (Overrides DbDataReader.GetInt64(Int32).)
Public method GetLifetimeService Retrieves the current lifetime service object that controls the lifetime policy for this instance. (Inherited from MarshalByRefObject.)
Public method GetName Gets the name of the specified column. (Overrides DbDataReader.GetName(Int32).)
Public method GetOrdinal Gets the column ordinal, given the name of the column. (Overrides DbDataReader.GetOrdinal(String).)
Public method GetProviderSpecificFieldType Gets an Object that is a representation of the underlying provider-specific field type. (Overrides DbDataReader.GetProviderSpecificFieldType(Int32).)
Public method GetProviderSpecificValue Gets an Object that is a representation of the underlying provider specific value. (Overrides DbDataReader.GetProviderSpecificValue(Int32).)
Public method GetProviderSpecificValues Gets an array of objects that are a representation of the underlying provider specific values. (Overrides DbDataReader.GetProviderSpecificValues(Object[]).)
Public method GetSchemaTable Returns a DataTable that describes the column metadata of the SqlDataReader. (Overrides DbDataReader.GetSchemaTable().)
Public method GetSqlBinary Gets the value of the specified column as a SqlBinary.
Public method GetSqlBoolean Gets the value of the specified column as a SqlBoolean.
Public method GetSqlByte Gets the value of the specified column as a SqlByte.
Public method GetSqlBytes Gets the value of the specified column as SqlBytes.
Public method GetSqlChars Gets the value of the specified column as SqlChars.
Public method GetSqlDateTime Gets the value of the specified column as a SqlDateTime.
Public method GetSqlDecimal Gets the value of the specified column as a SqlDecimal.
Public method GetSqlDouble Gets the value of the specified column as a SqlDouble.
Public method GetSqlGuid Gets the value of the specified column as a SqlGuid.
Public method GetSqlInt16 Gets the value of the specified column as a SqlInt16.
Public method GetSqlInt32 Gets the value of the specified column as a SqlInt32.
Public method GetSqlInt64 Gets the value of the specified column as a SqlInt64.
Public method GetSqlMoney Gets the value of the specified column as a SqlMoney.
Public method GetSqlSingle Gets the value of the specified column as a SqlSingle.
Public method GetSqlString Gets the value of the specified column as a SqlString.
Public method GetSqlValue Returns the data value in the specified column as a SQL Server type.
Public method GetSqlValues Fills an array of Object that contains the values for all the columns in the record, expressed as SQL Server types.
Public method GetSqlXml Gets the value of the specified column as an XML value.
Public method GetString Gets the value of the specified column as a string. (Overrides DbDataReader.GetString(Int32).)
Public method GetTimeSpan Retrieves the value of the specified column as a TimeSpan object.
Public method GetType Gets the Type of the current instance. (Inherited from Object.)
Public method GetValue Gets the value of the specified column in its native format. (Overrides DbDataReader.GetValue(Int32).)
Public method GetValues Populates an array of objects with the column values of the current row. (Overrides DbDataReader.GetValues(Object[]).)
Public method InitializeLifetimeService Obtains a lifetime service object to control the lifetime policy for this instance. (Inherited from MarshalByRefObject.)
Protected method IsCommandBehavior Determines whether the specified CommandBehavior matches that of the SqlDataReader .
Public method IsDBNull Gets a value that indicates whether the column contains non-existent or missing values. (Overrides DbDataReader.IsDBNull(Int32).)
Protected method MemberwiseClone() Creates a shallow copy of the current Object. (Inherited from Object.)
Protected method MemberwiseClone(Boolean) Creates a shallow copy of the current MarshalByRefObject object. (Inherited from MarshalByRefObject.)
Public method NextResult Advances the data reader to the next result, when reading the results of batch Transact-SQL statements. (Overrides DbDataReader.NextResult().)
Public method Read Advances the SqlDataReader to the next record. (Overrides DbDataReader.Read().)
Public method ToString Returns a string that represents the current object. (Inherited from Object.)
Top
  Name Description
Explicit interface implemetation Private method IDataRecord.GetData Returns an IDataReader for the specified column ordinal.
Top

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.

Note Note

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.


private static void 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();
    }
}


.NET Framework

Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

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.
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ