jueves, 20 de julio de 2017

OBJETO SQLDATAREADER

https://es.slideshare.net/SILVA19_PAMELA/laboratorio-de-programacin-i-78104669


“AÑO DEL BUEN SERVICIO AL CUIDADANO”

TEMA: OBJETO SQLDATAREADER.

CURSO: LABORATORIO DE PROGRAMACIÓN I.

ESPECIALIDAD: INGENIERIA DE SISTEMAS Y TELEMATICA.

NOMBRE: GILDA  PAMELA

APELLIDO: SILVA  FLORES

DOCENTE: MARCO AURELIO  PORRO  CHULL.

CILCO: IV – A                                   AULA: 501

BAGUA GRANDE– PERÚ

2017


1.   CONTENIDO

©     DEFINICIÓN


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


©     PROPIEDADES



NOMBRE
DESCRIPCIÓN
Obtiene la SqlConnection asociada a la SqlDataReader.
Obtiene un valor que indica la profundidad de anidamiento de la fila actual. (Invalida DbDataReader.Depth).
Obtiene el número de columnas de la fila actual. (Invalida DbDataReader.FieldCount).
Obtiene un valor que indica si la SqlDataReader contiene una o más filas. (Invalida DbDataReader.HasRows).
Recupera un valor booleano que indica si el texto especificado SqlDataReader instancia se ha cerrado. (Invalida DbDataReader.IsClosed).
Obtiene el valor de la columna especificada en su formato nativo dado el ordinal de columna. (Invalida DbDataReader.Item[Int32]).
Obtiene el valor de la columna especificada en su formato nativo dado el nombre de columna. (Invalida DbDataReader.Item [String]).
Obtiene el número de filas cambiadas, insertadas o eliminadas mediante la ejecución de la instrucción de Transact-SQL. (Invalida DbDataReader.RecordsAffected).
Obtiene el número de campos de SqlDataReader que no están ocultos. (Invalida DbDataReader.VisibleFieldCount).


©     MÉTODOS

COLUMNA DE DATAREADER
DESCRIPCIÓN
AllowDBNull
Establece si el consumidor puede establecer la columna en un valor nulo o si el proveedor no puede determinar si el consumidor puede establecer la columna en un valor nulo. En caso contrario, no se establece. Una columna puede contener valores null, incluso si no se puede establecer en un valor nulo.
BaseCatalogName
Nombre del catálogo en el almacén de datos que contiene la columna. Es NULL si no se puede determinar el nombre del catálogo base. El valor predeterminado de esta columna es un valor null.
BaseColumnName
El nombre de la columna en el almacén de datos. Esto puede ser diferente del nombre de columna devuelto en la columna ColumnName si se utilizó un alias. Un valor null si no se puede determinar el nombre de columna base o si la columna de conjunto de filas es derivada, pero no idéntica, de una columna en los datos del almacén. El valor predeterminado de esta columna es un valor null.
BaseSchemaName
El nombre del esquema en el almacén de datos que contiene la columna. Un valor null si no se puede determinar el nombre de esquema de base. El valor predeterminado de esta columna es un valor null.
BaseServerName
El nombre de la instancia de Microsoft SQL Server utilizado por el SqlDataReader.

©     EJEMPLOS

§      PRIMER

using System;
using System.Data;
using System.Data.SqlClient;


class Program
{
    static void Main()
    {
        string str = "Data Source=(local);Initial Catalog=Northwind;"
            + "Integrated Security=SSPI";
        ReadOrderData(str);
    }

    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())
            {
                ReadSingleRow((IDataRecord)reader);
            }

            // Call Close when done reading.
            reader.Close();
        }
    }

    private static void ReadSingleRow(IDataRecord record)
    {
        Console.WriteLine(String.Format("{0}, {1}", record[0], record[1]));
    }

§      SEGUNDO

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


§      TERCERO

static void HasRows(SqlConnection connection)
{
    using (connection)
    {
        SqlCommand command = new SqlCommand(
          "SELECT CategoryID, CategoryName FROM Categories;",
          connection);
        connection.Open();

        SqlDataReader reader = command.ExecuteReader();

        if (reader.HasRows)
        {
            while (reader.Read())
            {
                Console.WriteLine("{0}\t{1}", reader.GetInt32(0),
                    reader.GetString(1));
            }
        }
        else
        {
            Console.WriteLine("No rows found.");
        }
        reader.Close();
    }
}


1.   RESUMEN

El proveedor de datos .NET Framework para Oracle admite el uso de cursores REF CURSOR de Oracle para devolver los resultados de una consulta.Un REF CURSOR de Oracle se devuelve en forma de objeto OracleDataReader.
Puede recuperar un objeto OracleDataReader, que representa un REF CURSOR de Oracle, mediante el método ExecuteReader. También puede especificar un OracleCommand que devuelva uno o varios cursores REF CURSOR de Oracle como SelectCommand de un OracleDataAdapterutilizado para rellenar un DataSet.
Para obtener acceso a un REF CURSOR devuelto desde un origen de datos de Oracle, cree un OracleCommand para la consulta y agregue un parámetro de salida que establezca una referencia entre el REF CURSOR y la colección Parameters de OracleCommand. El nombre del parámetro debe coincidir con el nombre del parámetro REF CURSOR de la consulta. Establezca el tipo del parámetro en OracleType.Cursor. El método ExecuteReader del OracleCommand devolverá un OracleDataReader para el REF CURSOR.
Si OracleCommand devuelve varios cursores REF CURSOR, agregue varios parámetros de salida. Puede tener acceso a los distintos cursores REF CURSOR llamando al método OracleCommand.ExecuteReader. La llamada a ExecuteReader devuelve un objeto OracleDataReader que haga referencia al primer REF CURSOR. A continuación, puede llamar al método OracleDataReader.NextResult para obtener acceso a los cursores REF CURSOR posteriores. Aunque los parámetros de la colección OracleCommand.Parameters tengan el mismo nombre que los parámetros de salida de REF CURSOR, OracleDataReader obtendrá acceso a éstos en el mismo orden en el que se agregaron a la colección Parameters.

2.   RECOMENDACIONES

©     La posición predeterminada de SqlDataReader es antes del primer registro. Por tanto, se debe llamar a Read para iniciar el acceso a cualquier dato.
©     Sólo se puede abrir un SqlDataReader por cada conexión SqlConnection asociada cada vez, y cualquier intento de abrir otro produce un error si no se cierra el primero. De forma similar, mientras se utiliza el objeto SqlDataReader, éste mantiene ocupado a la conexión SqlConnection asociada hasta que se llama a Close.
©   Se crean un objeto Connection especificando la cadena de conexión.
©   Se crea un DataAdapter.
©   Se crea un objeto Command asociado al DataAdapter, con la conexión adecuada y la sentencia SQL que haya de ejecutarse.
©   Se crea un DataSet donde almacenar los datos.
©   Se abre la conexión.
©   Se rellena el DataSet con datos a través del DataAdapter.
©   Se cierra la conexión.
©   Se trabaja con los datos almacenados en el DataSet

3.   CONCLUSIONES

©    En la versión de .NET Framework de Windows Server 2003 se incluye una propiedad adicional para el DataReader, HasRows, que permite determinar si el DataReader ha devuelto algún resultado antes de realizar una lectura del mismo.
©    No llame a Close o Dispose para objetos Connection o DataReader ni para ningún otro objeto administrado en el método Finalize de su clase. En un finalizador, libere solo los recursos no administrados que pertenezcan directamente a su clase. Si la clase no dispone de recursos no administrados, no incluya un método Finalize en la definición de clase. Para obtener más información, consulta Garbage Collection.
©    Se recomienda que el usuario controle también cualquier conversión del tipo NUMBER de Oracle a un tipo válido de .NET Framework antes de almacenar el valor en DataRow para evitar que se produzca una excepción OverflowException. Puede utilizar el evento FillError para determinar si se ha producido una excepción OverflowException. Para obtener más información sobre el evento FillError, vea Control de eventos DataAdapter.


4.   GLOSARIO DE TERMINO
Read ()._Desplaza SqlDataReader al siguiente registro. (Invalida DbDataReader.Read()).
ReadAsync()._Una versión asincrónica de Read, que hace avanzar el lector hasta el siguiente registro de un conjunto de resultados. Este método invoca ReadAsync con CancellationToken.None. (Heredado de DbDataReader).
ReadAsync(CancellationToken)._Una versión asincrónica de Read, qué avances el SqlDataReader al siguiente registro.Token de cancelación que se puede usar para solicitar que se abandone la operación antes de que transcurra el tiempo de espera del comando. Las excepciones se mostrarán a través del objeto Task devuelto. (Invalida DbDataReader.ReadAsync (CancellationToken)).
AsParallel ()._Sobrecargado. Habilita la paralelización de una consulta. (Definido por ParallelEnumerable).
AsQueryable ()._Sobrecargado. Convierte un IEnumerable para un IQueryable. (Definido por Queryable).
Cast<TResult> ()._Convierte los elementos de un IEnumerable al tipo especificado. (Definido por Enumerable).
OfType<TResult> ()._Filtra los elementos de un IEnumerable basado en un tipo especificado. (Definido por Enumerable).

5.   BIBLIOGRAFÍA
https://msdn.microsoft.com/es-es/library/haa3afyz(v=vs.110).aspx
https://msdn.microsoft.com/es-es/library/ms254931(v=vs.110).aspx
https://msdn.microsoft.com/es-es/.../system.data.sqlclient.sqldatareader(v=vs.110).aspx
https://msdn.microsoft.com/es-pe/library/aa720705(v=vs.71).aspx
https://es.wikipedia.org/wiki/ADO.NET
https://msdn.microsoft.com/es-es/library/haa3afyz(v=vs.110).aspx
https://msdn.microsoft.com/es-es/library/ms254931(v=vs.110).aspx
https://msdn.microsoft.com/es-es/.../system.data.sqlclient.sqldatareader(v=vs.110).aspx