SqlDataReader (Clase) (System.Data.SqlClient)

Cambiar vista:
Sin script
Biblioteca de clases de .NET Framework
SqlDataReader (Clase)
Este artículo se tradujo de forma manual. Para mostrar esta página y el contenido original en inglés al mismo tiempo, cambie a Lightweight según sus preferencias de visualización.

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.

Jerarquía de herencia

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)
Sintaxis

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.

Propiedades

  Nombre Descripción
Propiedad protegida Connection Obtiene el objeto SqlConnection asociado a SqlDataReader.
Propiedad pública Depth Obtiene un valor que indica la profundidad del anidamiento de la fila actual. (Invalida a DbDataReader.Depth).
Propiedad pública FieldCount Obtiene el número de columnas de la fila actual. (Invalida a DbDataReader.FieldCount).
Propiedad pública HasRows Obtiene un valor que indica si el objeto SqlDataReader contiene una o varias filas. (Invalida a DbDataReader.HasRows).
Propiedad pública IsClosed Recupera un valor de tipo Boolean que indica si se ha cerrado la instancia de SqlDataReader especificada. (Invalida a DbDataReader.IsClosed).
Propiedad pública Item[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ública Item[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ública RecordsAffected Obtiene 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ública VisibleFieldCount Obtiene el número de campos de SqlDataReader que no están ocultos. (Invalida a DbDataReader.VisibleFieldCount).
Arriba
Métodos

  Nombre Descripción
Método público Close Cierra el objeto SqlDataReader. (Invalida a DbDataReader.Close()).
Método público CreateObjRef Crea 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úblico Dispose() Libera todos los recursos utilizados por la instancia actual de la clase DbDataReader. (Se hereda de DbDataReader).
Método protegido Dispose(Boolean) Libera los recursos no administrados que utiliza DbDataReader y, opcionalmente, también libera los recursos administrados. (Se hereda de DbDataReader).
Método público Equals(Object) Determina si el objeto Object especificado es igual al objeto Object actual. (Se hereda de Object).
Método protegido Finalize Permite 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úblico GetBoolean Obtiene el valor de la columna especificada como tipo Boolean. (Invalida a DbDataReader.GetBoolean(Int32)).
Método público GetByte Obtiene el valor de la columna especificada como byte. (Invalida a DbDataReader.GetByte(Int32)).
Método público GetBytes Lee 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, Byte[], Int32, Int32)).
Método público GetChar Obtiene el valor de la columna especificada como un único carácter. (Invalida a DbDataReader.GetChar(Int32)).
Método público GetChars Lee 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, Char[], Int32, Int32)).
Método público GetData Devuelve un objeto DbDataReader para el ordinal de columna solicitado. (Se hereda de DbDataReader).
Método público GetDataTypeName Obtiene una cadena que representa el tipo de datos de la columna especificada. (Invalida a DbDataReader.GetDataTypeName(Int32)).
Método público GetDateTime Obtiene el valor de la columna especificada como un objeto DateTime. (Invalida a DbDataReader.GetDateTime(Int32)).
Método público GetDateTimeOffset Recupera el valor de la columna especificada como objeto DateTimeOffset.
Método protegido GetDbDataReader Devuelve 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úblico GetDecimal Obtiene el valor de la columna especificada como un objeto Decimal. (Invalida a DbDataReader.GetDecimal(Int32)).
Método público GetDouble Obtiene 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úblico GetEnumerator Devuelve un IEnumerator que recorre en iteración SqlDataReader. (Invalida a DbDataReader.GetEnumerator()).
Método público GetFieldType Obtiene el objeto Type que es el tipo de datos del objeto. (Invalida a DbDataReader.GetFieldType(Int32)).
Método público GetFloat Obtiene 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úblico GetGuid Obtiene el valor de la columna especificada en forma de identificador global único (GUID). (Invalida a DbDataReader.GetGuid(Int32)).
Método público GetHashCode Actúa como función hash para un tipo concreto. (Se hereda de Object).
Método público GetInt16 Obtiene el valor de la columna especificada como un entero de 16 bits con signo. (Invalida a DbDataReader.GetInt16(Int32)).
Método público GetInt32 Obtiene el valor de la columna especificada como un entero de 32 bits con signo. (Invalida a DbDataReader.GetInt32(Int32)).
Método público GetInt64 Obtiene el valor de la columna especificada como un entero de 64 bits con signo. (Invalida a DbDataReader.GetInt64(Int32)).
Método público GetLifetimeService Recupera 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úblico GetName Obtiene el nombre de la columna especificada. (Invalida a DbDataReader.GetName(Int32)).
Método público GetOrdinal Obtiene el ordinal de la columna a partir del nombre de la columna determinado. (Invalida a DbDataReader.GetOrdinal(String)).
Método público GetProviderSpecificFieldType Obtiene un Object que es una representación del tipo de campo específico del proveedor subyacente. (Invalida a DbDataReader.GetProviderSpecificFieldType(Int32)).
Método público GetProviderSpecificValue Obtiene un Object que es una representación del valor específico del proveedor subyacente. (Invalida a DbDataReader.GetProviderSpecificValue(Int32)).
Método público GetProviderSpecificValues Obtiene una matriz de objetos que son una representación de los valores específicos del proveedor subyacentes. (Invalida a DbDataReader.GetProviderSpecificValues(Object[])).
Método público GetSchemaTable Devuelve una DataTable que describe los metadatos de columna del SqlDataReader. (Invalida a DbDataReader.GetSchemaTable()).
Método público GetSqlBinary Obtiene el valor de la columna especificada en forma de SqlBinary.
Método público GetSqlBoolean Obtiene el valor de la columna especificada en forma de SqlBoolean.
Método público GetSqlByte Obtiene el valor de la columna especificada en forma de SqlByte.
Método público GetSqlBytes Obtiene el valor de la columna especificada en forma de SqlBytes.
Método público GetSqlChars Obtiene el valor de la columna especificada en forma de SqlChars.
Método público GetSqlDateTime Obtiene el valor de la columna especificada en forma de SqlDateTime.
Método público GetSqlDecimal Obtiene el valor de la columna especificada en forma de SqlDecimal.
Método público GetSqlDouble Obtiene el valor de la columna especificada en forma de SqlDouble.
Método público GetSqlGuid Obtiene el valor de la columna especificada en forma de SqlGuid.
Método público GetSqlInt16 Obtiene el valor de la columna especificada en forma de SqlInt16.
Método público GetSqlInt32 Obtiene el valor de la columna especificada en forma de SqlInt32.
Método público GetSqlInt64 Obtiene el valor de la columna especificada en forma de SqlInt64.
Método público GetSqlMoney Obtiene el valor de la columna especificada en forma de SqlMoney.
Método público GetSqlSingle Obtiene el valor de la columna especificada en forma de SqlSingle.
Método público GetSqlString Obtiene el valor de la columna especificada en forma de SqlString.
Método público GetSqlValue Devuelve el valor de datos de la columna especificada como tipo de SQL Server.
Método público GetSqlValues Rellena una matriz de Object que contiene los valores de todas las columnas en el registro, expresados como tipos de SQL Server.
Método público GetSqlXml Obtiene el valor de la columna especificada como un valor XML.
Método público GetString Obtiene el valor de la columna especificada como una cadena. (Invalida a DbDataReader.GetString(Int32)).
Método público GetTimeSpan Recupera el valor de la columna especificada como objeto TimeSpan.
Método público GetType Obtiene el objeto Type de la instancia actual. (Se hereda de Object).
Método público GetValue Obtiene el valor de la columna especificada en su formato nativo. (Invalida a DbDataReader.GetValue(Int32)).
Método público GetValues Rellena una matriz de objetos con los valores de columna de la fila actual. (Invalida a DbDataReader.GetValues(Object[])).
Método público InitializeLifetimeService Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia. (Se hereda de MarshalByRefObject).
Método protegido IsCommandBehavior Determina si el valor de CommandBehavior especificado coincide con el de SqlDataReader.
Método público IsDBNull Obtiene un valor que indica si la columna contiene valores no existentes o que faltan. (Invalida a DbDataReader.IsDBNull(Int32)).
Método protegido MemberwiseClone() Crea una copia superficial del objeto Object actual. (Se hereda de Object).
Método protegido MemberwiseClone(Boolean) Crea una copia superficial del objeto MarshalByRefObject actual. (Se hereda de MarshalByRefObject).
Método público NextResult Desplaza 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úblico Read Desplaza SqlDataReader hasta el siguiente registro. (Invalida a DbDataReader.Read()).
Método público ToString Devuelve una cadena que representa el objeto actual. (Se hereda de Object).
Arriba
Implementaciones explícitas de interfaces

  Nombre Descripción
Implementación explícita de interfaces Método privado IDataRecord.GetData Devuelve una interfaz IDataReader para el ordinal de columna especificado.
Arriba
Comentarios

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.

Nota Nota

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.

Ejemplos

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


Información de versión

.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
Plataformas

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.
Seguridad para subprocesos

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.
Vea también

Referencia

Otros recursos