1. “AÑO DEL BUEN SERVICIO AL CUIDADANO”
TEMA: OBJETO SQLDATAREADER.
CURSO: LABORATORIO DE PROGRAMACIÓN I.
ESPECIALIDAD: INGENIERIA DE SISTEMAS Y TELEMATICA.
NOMBRE Y APELLIDO : GILDA PAMELA SILVA FLORES.
DOCENTE: MARCO AURELIO PORRO CHULL.
CILCO: IV – A AULA: 501
BAGUA GRANDE– PERÚ
2017
2. 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.
3. LAS CLASES DATAREADER
• Un objeto datareader permite la navegación hacia delante y de
Sólo lectura de los registros de vueltos por una consulta.
• A diferencia de los objetos que trabajan en modo desconectado
comentados Anteriormente, este objeto permanece conectado
durante todo el tiempo que se este trabajo con el.
• Para obtener un objeto DATAREADER tendremos que ejecutar
un método ExecuteReader() en un objeto command ,Basado en
una consulta SQL.
4.
5. PROPIEDADES
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.
6. EJEMPLOS
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;";
7. 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]));
}
8. 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..
9. 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
10. 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.