Sugerir traducción
 
Otros han sugerido:

progress indicator
No hay más sugerencias.
Evaluar y enviar comentarios
Contraer todo/Expandir todo Contraer todo
Ver contenido:  en paraleloVer contenido: en paralelo
.NET Framework Class Library
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)
Visual Basic
Public Class SqlDataReader _
    Inherits DbDataReader _
    Implements IDataReader, IDisposable, IDataRecord
C#
public class SqlDataReader : DbDataReader, 
    IDataReader, IDisposable, IDataRecord
Visual C++
public ref class SqlDataReader : public DbDataReader, 
    IDataReader, IDisposable, IDataRecord
F#
type SqlDataReader =  
    class
        inherit DbDataReader
        interface IDataReader
        interface IDisposable
        interface IDataRecord
    end

The SqlDataReader type exposes the following members.

  NameDescription
Protected propertyConnectionGets the SqlConnection associated with the SqlDataReader.
Public propertyDepthGets a value that indicates the depth of nesting for the current row. (Overrides DbDataReader..::.Depth.)
Public propertyFieldCountGets the number of columns in the current row. (Overrides DbDataReader..::.FieldCount.)
Public propertyHasRowsGets a value that indicates whether the SqlDataReader contains one or more rows. (Overrides DbDataReader..::.HasRows.)
Public propertyIsClosedRetrieves a Boolean value that indicates whether the specified SqlDataReader instance has been closed. (Overrides DbDataReader..::.IsClosed.)
Public propertyItem[([(Int32])])Gets the value of the specified column in its native format given the column ordinal. (Overrides DbDataReader..::.Item[([(Int32])]).)
Public propertyItem[([(String])])Gets the value of the specified column in its native format given the column name. (Overrides DbDataReader..::.Item[([(String])]).)
Public propertyRecordsAffectedGets the number of rows changed, inserted, or deleted by execution of the Transact-SQL statement. (Overrides DbDataReader..::.RecordsAffected.)
Public propertyVisibleFieldCountGets the number of fields in the SqlDataReader that are not hidden. (Overrides DbDataReader..::.VisibleFieldCount.)
Top
  NameDescription
Public methodCloseCloses the SqlDataReader object. (Overrides DbDataReader..::.Close()()().)
Public methodCreateObjRefCreates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object. (Inherited from MarshalByRefObject.)
Public methodDispose()()()Releases all resources used by the current instance of the DbDataReader class. (Inherited from DbDataReader.)
Protected methodDispose(Boolean)Releases the managed resources used by the DbDataReader and optionally releases the unmanaged resources. (Inherited from DbDataReader.)
Public methodEquals(Object)Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected methodFinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public methodGetBooleanGets the value of the specified column as a Boolean. (Overrides DbDataReader..::.GetBoolean(Int32).)
Public methodGetByteGets the value of the specified column as a byte. (Overrides DbDataReader..::.GetByte(Int32).)
Public methodGetBytesReads 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, array<Byte>[]()[], Int32, Int32).)
Public methodGetCharGets the value of the specified column as a single character. (Overrides DbDataReader..::.GetChar(Int32).)
Public methodGetCharsReads 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, array<Char>[]()[], Int32, Int32).)
Public methodGetDataReturns a DbDataReader object for the requested column ordinal. (Inherited from DbDataReader.)
Public methodGetDataTypeNameGets a string representing the data type of the specified column. (Overrides DbDataReader..::.GetDataTypeName(Int32).)
Public methodGetDateTimeGets the value of the specified column as a DateTime object. (Overrides DbDataReader..::.GetDateTime(Int32).)
Public methodGetDateTimeOffsetRetrieves the value of the specified column as a DateTimeOffset object.
Protected methodGetDbDataReaderReturns a DbDataReader object for the requested column ordinal that can be overridden with a provider-specific implementation. (Inherited from DbDataReader.)
Public methodGetDecimalGets the value of the specified column as a Decimal object. (Overrides DbDataReader..::.GetDecimal(Int32).)
Public methodGetDoubleGets the value of the specified column as a double-precision floating point number. (Overrides DbDataReader..::.GetDouble(Int32).)
Public methodGetEnumeratorReturns an IEnumerator that iterates through the SqlDataReader. (Overrides DbDataReader..::.GetEnumerator()()().)
Public methodGetFieldTypeGets the Type that is the data type of the object. (Overrides DbDataReader..::.GetFieldType(Int32).)
Public methodGetFloatGets the value of the specified column as a single-precision floating point number. (Overrides DbDataReader..::.GetFloat(Int32).)
Public methodGetGuidGets the value of the specified column as a globally unique identifier (GUID). (Overrides DbDataReader..::.GetGuid(Int32).)
Public methodGetHashCodeServes as a hash function for a particular type. (Inherited from Object.)
Public methodGetInt16Gets the value of the specified column as a 16-bit signed integer. (Overrides DbDataReader..::.GetInt16(Int32).)
Public methodGetInt32Gets the value of the specified column as a 32-bit signed integer. (Overrides DbDataReader..::.GetInt32(Int32).)
Public methodGetInt64Gets the value of the specified column as a 64-bit signed integer. (Overrides DbDataReader..::.GetInt64(Int32).)
Public methodGetLifetimeServiceRetrieves the current lifetime service object that controls the lifetime policy for this instance. (Inherited from MarshalByRefObject.)
Public methodGetNameGets the name of the specified column. (Overrides DbDataReader..::.GetName(Int32).)
Public methodGetOrdinalGets the column ordinal, given the name of the column. (Overrides DbDataReader..::.GetOrdinal(String).)
Public methodGetProviderSpecificFieldTypeGets an Object that is a representation of the underlying provider-specific field type. (Overrides DbDataReader..::.GetProviderSpecificFieldType(Int32).)
Public methodGetProviderSpecificValueGets an Object that is a representation of the underlying provider specific value. (Overrides DbDataReader..::.GetProviderSpecificValue(Int32).)
Public methodGetProviderSpecificValuesGets an array of objects that are a representation of the underlying provider specific values. (Overrides DbDataReader..::.GetProviderSpecificValues(array<Object>[]()[]).)
Public methodGetSchemaTableReturns a DataTable that describes the column metadata of the SqlDataReader. (Overrides DbDataReader..::.GetSchemaTable()()().)
Public methodGetSqlBinaryGets the value of the specified column as a SqlBinary.
Public methodGetSqlBooleanGets the value of the specified column as a SqlBoolean.
Public methodGetSqlByteGets the value of the specified column as a SqlByte.
Public methodGetSqlBytesGets the value of the specified column as SqlBytes.
Public methodGetSqlCharsGets the value of the specified column as SqlChars.
Public methodGetSqlDateTimeGets the value of the specified column as a SqlDateTime.
Public methodGetSqlDecimalGets the value of the specified column as a SqlDecimal.
Public methodGetSqlDoubleGets the value of the specified column as a SqlDouble.
Public methodGetSqlGuidGets the value of the specified column as a SqlGuid.
Public methodGetSqlInt16Gets the value of the specified column as a SqlInt16.
Public methodGetSqlInt32Gets the value of the specified column as a SqlInt32.
Public methodGetSqlInt64Gets the value of the specified column as a SqlInt64.
Public methodGetSqlMoneyGets the value of the specified column as a SqlMoney.
Public methodGetSqlSingleGets the value of the specified column as a SqlSingle.
Public methodGetSqlStringGets the value of the specified column as a SqlString.
Public methodGetSqlValueReturns the data value in the specified column as a SQL Server type.
Public methodGetSqlValuesFills an array of Object that contains the values for all the columns in the record, expressed as SQL Server types.
Public methodGetSqlXmlGets the value of the specified column as an XML value.
Public methodGetStringGets the value of the specified column as a string. (Overrides DbDataReader..::.GetString(Int32).)
Public methodGetTimeSpanRetrieves the value of the specified column as a TimeSpan object.
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Public methodGetValueGets the value of the specified column in its native format. (Overrides DbDataReader..::.GetValue(Int32).)
Public methodGetValuesPopulates an array of objects with the column values of the current row. (Overrides DbDataReader..::.GetValues(array<Object>[]()[]).)
Public methodInitializeLifetimeServiceObtains a lifetime service object to control the lifetime policy for this instance. (Inherited from MarshalByRefObject.)
Protected methodIsCommandBehaviorDetermines whether the specified CommandBehavior matches that of the SqlDataReader .
Public methodIsDBNullGets a value that indicates whether the column contains non-existent or missing values. (Overrides DbDataReader..::.IsDBNull(Int32).)
Protected methodMemberwiseClone()()()Creates a shallow copy of the current Object. (Inherited from Object.)
Protected methodMemberwiseClone(Boolean)Creates a shallow copy of the current MarshalByRefObject object. (Inherited from MarshalByRefObject.)
Public methodNextResultAdvances the data reader to the next result, when reading the results of batch Transact-SQL statements. (Overrides DbDataReader..::.NextResult()()().)
Public methodReadAdvances the SqlDataReader to the next record. (Overrides DbDataReader..::.Read()()().)
Public methodToStringReturns a string that represents the current object. (Inherited from Object.)
Top
  NameDescription
Explicit interface implemetationPrivate methodIDataRecord..::.GetDataReturns 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.

NoteNote

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.

Visual Basic
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()
            Console.WriteLine(String.Format("{0}, {1}", _
                reader(0), reader(1)))
        End While

        ' Call Close when done reading.
        reader.Close()
    End Using
End Sub
C#
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 Role not supported), Windows Server 2008 R2 (Server Core Role not supported), 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.
Biblioteca de clases de .NET Framework
SqlDataReader (Clase)

Proporciona una forma de leer una secuencia de filas sólo hacia delante en una base de datos de SQL Server. Esta clase no puede heredarse.

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

Espacio de nombres:  System.Data.SqlClient
Ensamblado:  System.Data (en System.Data.dll)
Visual Basic
Public Class SqlDataReader _
    Inherits DbDataReader _
    Implements IDataReader, IDisposable, IDataRecord
C#
public class SqlDataReader : DbDataReader, 
    IDataReader, IDisposable, IDataRecord
Visual C++
public ref class SqlDataReader : public DbDataReader, 
    IDataReader, IDisposable, IDataRecord
F#
type SqlDataReader =  
    class
        inherit DbDataReader
        interface IDataReader
        interface IDisposable
        interface IDataRecord
    end

El tipo SqlDataReader expone los siguientes miembros.

  NombreDescripción
Propiedad protegidaConnectionObtiene el objeto SqlConnection asociado a SqlDataReader.
Propiedad públicaDepthObtiene un valor que indica la profundidad del anidamiento de la fila actual. (Invalida a DbDataReader..::.Depth).
Propiedad públicaFieldCountObtiene el número de columnas de la fila actual. (Invalida a DbDataReader..::.FieldCount).
Propiedad públicaHasRowsObtiene un valor que indica si el objeto SqlDataReader contiene una o varias filas. (Invalida a DbDataReader..::.HasRows).
Propiedad públicaIsClosedRecupera un valor de tipo Boolean que indica si se ha cerrado la instancia de SqlDataReader especificada. (Invalida a DbDataReader..::.IsClosed).
Propiedad públicaItem[([(Int32])])Obtiene el valor de la columna especificada en su formato nativo si se da el ordinal de la columna. (Invalida a DbDataReader..::.Item[([(Int32])])).
Propiedad públicaItem[([(String])])Obtiene el valor de la columna especificada en su formato nativo si se da el nombre de la columna. (Invalida a DbDataReader..::.Item[([(String])])).
Propiedad públicaRecordsAffectedObtiene el número de filas cambiadas, insertadas o eliminadas por la ejecución de una instrucción de Transact-SQL. (Invalida a DbDataReader..::.RecordsAffected).
Propiedad públicaVisibleFieldCountObtiene el número de campos de SqlDataReader que no están ocultos. (Invalida a DbDataReader..::.VisibleFieldCount).
Arriba
  NombreDescripción
Método públicoCloseCierra el objeto SqlDataReader. (Invalida a DbDataReader..::.Close()()()).
Método públicoCreateObjRefCrea un objeto que contiene toda la información relevante necesaria para generar un proxy utilizado para comunicarse con un objeto remoto. (Se hereda de MarshalByRefObject).
Método públicoDispose()()()Libera todos los recursos utilizados por la instancia actual de la clase DbDataReader. (Se hereda de DbDataReader).
Método protegidoDispose(Boolean)Libera los recursos no administrados que utiliza DbDataReader y, opcionalmente, también libera los recursos administrados. (Se hereda de DbDataReader).
Método públicoEquals(Object)Determina si el objeto Object especificado es igual al objeto Object actual. (Se hereda de Object).
Método protegidoFinalizePermite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object).
Método públicoGetBooleanObtiene el valor de la columna especificada como tipo Boolean. (Invalida a DbDataReader..::.GetBoolean(Int32)).
Método públicoGetByteObtiene el valor de la columna especificada como byte. (Invalida a DbDataReader..::.GetByte(Int32)).
Método públicoGetBytesLee una secuencia de bytes a partir del desplazamiento de la columna especificada en el búfer como una matriz que se inicia en el desplazamiento del búfer dado. (Invalida a DbDataReader..::.GetBytes(Int32, Int64, array<Byte>[]()[], Int32, Int32)).
Método públicoGetCharObtiene el valor de la columna especificada como un único carácter. (Invalida a DbDataReader..::.GetChar(Int32)).
Método públicoGetCharsLee una secuencia de caracteres del desplazamiento de columna que se haya especificado en el búfer como matriz, comenzando en el desplazamiento de búfer dado. (Invalida a DbDataReader..::.GetChars(Int32, Int64, array<Char>[]()[], Int32, Int32)).
Método públicoGetDataDevuelve un objeto DbDataReader para el ordinal de columna solicitado. (Se hereda de DbDataReader).
Método públicoGetDataTypeNameObtiene una cadena que representa el tipo de datos de la columna especificada. (Invalida a DbDataReader..::.GetDataTypeName(Int32)).
Método públicoGetDateTimeObtiene el valor de la columna especificada como un objeto DateTime. (Invalida a DbDataReader..::.GetDateTime(Int32)).
Método públicoGetDateTimeOffsetRecupera el valor de la columna especificada como objeto DateTimeOffset.
Método protegidoGetDbDataReaderDevuelve un objeto DbDataReader para el índice de columna solicitado que se puede reemplazar con una implementación específica del proveedor. (Se hereda de DbDataReader).
Método públicoGetDecimalObtiene el valor de la columna especificada como un objeto Decimal. (Invalida a DbDataReader..::.GetDecimal(Int32)).
Método públicoGetDoubleObtiene el valor de la columna especificada como un número de punto flotante de precisión doble. (Invalida a DbDataReader..::.GetDouble(Int32)).
Método públicoGetEnumeratorDevuelve un IEnumerator que recorre en iteración SqlDataReader. (Invalida a DbDataReader..::.GetEnumerator()()()).
Método públicoGetFieldTypeObtiene el objeto Type que es el tipo de datos del objeto. (Invalida a DbDataReader..::.GetFieldType(Int32)).
Método públicoGetFloatObtiene el valor de la columna especificada como un número de punto flotante de precisión sencilla. (Invalida a DbDataReader..::.GetFloat(Int32)).
Método públicoGetGuidObtiene el valor de la columna especificada en forma de identificador global único (GUID). (Invalida a DbDataReader..::.GetGuid(Int32)).
Método públicoGetHashCodeActúa como función hash para un tipo concreto. (Se hereda de Object).
Método públicoGetInt16Obtiene el valor de la columna especificada como un entero de 16 bits con signo. (Invalida a DbDataReader..::.GetInt16(Int32)).
Método públicoGetInt32Obtiene el valor de la columna especificada como un entero de 32 bits con signo. (Invalida a DbDataReader..::.GetInt32(Int32)).
Método públicoGetInt64Obtiene el valor de la columna especificada como un entero de 64 bits con signo. (Invalida a DbDataReader..::.GetInt64(Int32)).
Método públicoGetLifetimeServiceRecupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia. (Se hereda de MarshalByRefObject).
Método públicoGetNameObtiene el nombre de la columna especificada. (Invalida a DbDataReader..::.GetName(Int32)).
Método públicoGetOrdinalObtiene el ordinal de la columna a partir del nombre de la columna determinado. (Invalida a DbDataReader..::.GetOrdinal(String)).
Método públicoGetProviderSpecificFieldTypeObtiene un Object que es una representación del tipo de campo específico del proveedor subyacente. (Invalida a DbDataReader..::.GetProviderSpecificFieldType(Int32)).
Método públicoGetProviderSpecificValueObtiene un Object que es una representación del valor específico del proveedor subyacente. (Invalida a DbDataReader..::.GetProviderSpecificValue(Int32)).
Método públicoGetProviderSpecificValuesObtiene una matriz de objetos que son una representación de los valores específicos del proveedor subyacentes. (Invalida a DbDataReader..::.GetProviderSpecificValues(array<Object>[]()[])).
Método públicoGetSchemaTableDevuelve una DataTable que describe los metadatos de columna del SqlDataReader. (Invalida a DbDataReader..::.GetSchemaTable()()()).
Método públicoGetSqlBinaryObtiene el valor de la columna especificada en forma de SqlBinary.
Método públicoGetSqlBooleanObtiene el valor de la columna especificada en forma de SqlBoolean.
Método públicoGetSqlByteObtiene el valor de la columna especificada en forma de SqlByte.
Método públicoGetSqlBytesObtiene el valor de la columna especificada en forma de SqlBytes.
Método públicoGetSqlCharsObtiene el valor de la columna especificada en forma de SqlChars.
Método públicoGetSqlDateTimeObtiene el valor de la columna especificada en forma de SqlDateTime.
Método públicoGetSqlDecimalObtiene el valor de la columna especificada en forma de SqlDecimal.
Método públicoGetSqlDoubleObtiene el valor de la columna especificada en forma de SqlDouble.
Método públicoGetSqlGuidObtiene el valor de la columna especificada en forma de SqlGuid.
Método públicoGetSqlInt16Obtiene el valor de la columna especificada en forma de SqlInt16.
Método públicoGetSqlInt32Obtiene el valor de la columna especificada en forma de SqlInt32.
Método públicoGetSqlInt64Obtiene el valor de la columna especificada en forma de SqlInt64.
Método públicoGetSqlMoneyObtiene el valor de la columna especificada en forma de SqlMoney.
Método públicoGetSqlSingleObtiene el valor de la columna especificada en forma de SqlSingle.
Método públicoGetSqlStringObtiene el valor de la columna especificada en forma de SqlString.
Método públicoGetSqlValueDevuelve el valor de datos de la columna especificada como tipo de SQL Server.
Método públicoGetSqlValuesRellena una matriz de Object que contiene los valores de todas las columnas en el registro, expresados como tipos de SQL Server.
Método públicoGetSqlXmlObtiene el valor de la columna especificada como un valor XML.
Método públicoGetStringObtiene el valor de la columna especificada como una cadena. (Invalida a DbDataReader..::.GetString(Int32)).
Método públicoGetTimeSpanRecupera el valor de la columna especificada como objeto TimeSpan.
Método públicoGetTypeObtiene el objeto Type de la instancia actual. (Se hereda de Object).
Método públicoGetValueObtiene el valor de la columna especificada en su formato nativo. (Invalida a DbDataReader..::.GetValue(Int32)).
Método públicoGetValuesRellena una matriz de objetos con los valores de columna de la fila actual. (Invalida a DbDataReader..::.GetValues(array<Object>[]()[])).
Método públicoInitializeLifetimeServiceObtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia. (Se hereda de MarshalByRefObject).
Método protegidoIsCommandBehaviorDetermina si el valor de CommandBehavior especificado coincide con el de SqlDataReader.
Método públicoIsDBNullObtiene un valor que indica si la columna contiene valores no existentes o que faltan. (Invalida a DbDataReader..::.IsDBNull(Int32)).
Método protegidoMemberwiseClone()()()Crea una copia superficial del objeto Object actual. (Se hereda de Object).
Método protegidoMemberwiseClone(Boolean)Crea una copia superficial del objeto MarshalByRefObject actual. (Se hereda de MarshalByRefObject).
Método públicoNextResultDesplaza el lector de datos al siguiente resultado cuando se leen los resultados de las instrucciones de Transact-SQL por lotes. (Invalida a DbDataReader..::.NextResult()()()).
Método públicoReadDesplaza SqlDataReader hasta el siguiente registro. (Invalida a DbDataReader..::.Read()()()).
Método públicoToStringDevuelve una cadena que representa el objeto actual. (Se hereda de Object).
Arriba
  NombreDescripción
Implementación explícita de interfacesMétodo privadoIDataRecord..::.GetDataDevuelve una interfaz IDataReader para el ordinal de columna especificado.
Arriba

Para crear un SqlDataReader, se debe llamar al método ExecuteReader del objeto SqlCommand, en lugar de utilizar directamente un constructor.

Mientras se está utilizando SqlDataReader, el objeto SqlConnection asociado está ocupado dando servicio a SqlDataReader, y en SqlConnection no se puede realizar ninguna otra operación, excepto la de cerrar. Esto es así hasta que se llama al método Close de SqlDataReader. Por ejemplo, no se pueden recuperar parámetros de salida hasta después de llamar a Close.

Los cambios que realiza otro proceso o subproceso en un conjunto de resultados mientras se leen los datos, pueden ser visibles para el usuario de SqlDataReader. Sin embargo, el comportamiento exacto depende de los intervalos de tiempo.

IsClosed y RecordsAffected son las únicas propiedades que se pueden llamar después de cerrar SqlDataReader. Si bien se puede obtener acceso a la propiedad RecordsAffected mientras exista SqlDataReader, se debe llamar siempre al método Close antes de devolver el valor de RecordsAffected para garantizar que el valor devuelto sea exacto.

NotaNota

Para obtener un rendimiento óptimo, SqlDataReader evita crear objetos innecesarios o hacer copias de objetos innecesarias. Por tanto, varias llamadas a los métodos como GetValue devuelven una referencia al mismo objeto. Conviene tener mucho cuidado si se modifica el valor subyacente de los objetos devueltos por métodos como GetValue.

En el siguiente ejemplo, se crean una conexión SqlConnection, un objeto SqlCommand y un SqlDataReader. En el ejemplo se leen los datos y se escriben en la ventana de la consola. Seguidamente, el código cierra SqlDataReader. SqlConnection se cierra automáticamente al final del bloque de código using.

Visual Basic
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()
            Console.WriteLine(String.Format("{0}, {1}", _
                reader(0), reader(1)))
        End While

        ' Call Close when done reading.
        reader.Close()
    End Using
End Sub
C#
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

Compatible con: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 7, Windows Vista SP1 o posterior, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (no se admite Server Core), Windows Server 2008 R2 (se admite Server Core con SP1 o posterior), Windows Server 2003 SP2

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.
Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.
Contenido de la comunidad   ¿Qué es Community Content?
Agregar contenido nuevo RSS  Anotaciones
Processing
© 2012 Microsoft. Reservados todos los derechos. Términos de uso | Marcas Registradas | Privacidad
Page view tracker