Ir al contenido principal

ADO.Net - Recuperar datos con DataReader

DataReader:
Se utiliza solo para recuperar información de SOLO LECTURA de la base de datos, considerando que no se puede realizar modificaciones alguna. Mejora en rendimiento y reduce la sobrecarga del sistemas (lo recomendable es recupera datos puntuales que no serán modificadas).

Implica crear una instancia del objeto Command y de un DataReader a continuación, para lo cual se llama a Command.ExecuteReader a fin de recuperar filas de un origen de datos.

Requisitos
  1. IDE (Visual Studio 2010).
  2. SGBD (SQL Server 2008.
  3. LP (C#)
  • Crear la solución con nombre de [ADO.Net DataReader].
  • Crear la base de datos (se creará desde el IDE de Visual Studio 2010); publico los pasos  de como crear una base de datos desde el propio IDE  (en ocasiones nos es útil crealo desde el propio IDE de Visual Studio).
Clic derecho en data connection / create new sql server database.

Autentificacion, server name / user name / password / new database name, clic en OK.
  • Creando la tabla Cliente


Clic derecho en table / add new table

Creando campos y primary key (seleccionar el campo IdCliente y clic en set primary key).

Guardando la tabla cliente 
  • Paso opcional, si deseas modificar la tabla cliente


Clic derecho en table / open table definition

Modificaremos los not null a null y clic en save all
  • Insertar datos a la tabla cliente.
Clic derecho en la tabla cliente / show table date

Insertamos los datos necesarios y clic en save all
  • Diseñar nuestro formulario (Form1.cs).
Controles datagridview, botton
  • Crear el app.config para nuestra cadena de conexión con la  base de datos.
  • Crear las clases clsClienteDal y clsClienteEntity.
Explicaciones:

Cadena de conexión (app.config).
Crear nuestra cadena de conexión (código XML), con nombre "cndb"

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>   
  </configSections>
  <connectionStrings>
    <add name="cndb"
         connectionString ="Data Source=HADSON-PC;Initial Catalog=dbAdoNet;User ID=sa; Password=aquitupassword;Pooling=False"
         providerName="System.Data.SqlCliente"/>
  </connectionStrings>
</configuration>

Entidades (clsClienteEntity).
Creamos la clase de entidad, donde creamos las propiedades (columna) de la entidad (tabla cliente). 

public class ClsClienteEntity
    {
        public int IdCliente { getset; }
        public string NomCliente { getset; }
        public string ApeCliente { getset; }
        public string DirCliente { getset; }
        public string TelCliente { getset; }
        public string CelCliente { getset; }
    }

Capa de acceso a datos (clsClienteDal).
Creamos nuestro método privado cargarCliente, en la cual creamos nuestra estructura de solo lectura y aremos referencia a nuestra clase de entidades ClsClienteEntity.

private static ClsClienteEntity cargarCliente(IDataReader Rdr)
        {
           ClsClienteEntity cliente = new ClsClienteEntity();

            cliente.IdCliente =  Convert.ToInt32(Rdr["IdCliente"]);
            cliente.NomCliente = Convert.ToString(Rdr["NomCliente"]);
            cliente.ApeCliente = Convert.ToString(Rdr["ApeCliente"]);
            cliente.DirCliente = Convert.ToString(Rdr["DirCliente"]);
            cliente.TelCliente = Convert.ToString(Rdr["TelCliente"]);
            cliente.CelCliente = Convert.ToString(Rdr["CelCliente"]);

           return cliente;
        }

Creamos nuestro método publico CargarAll; y recuperamos nuestra cadena de conexión "using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["cndb"].ToString()))" y con el SqlCommand recuperamos nuestra sentencia select "sql" y la variable de la cadena de conexión "cn". Recordemos que nuestro método es un List por tal motivo retornará un "return listar"

public static List<ClsClienteEntity> CargarAll()
        {           
            string sql = @"SELECT IdCliente, NomCliente, ApeCliente, DirCliente, TelCliente, CelCliente FROM Cliente";

            List<ClsClienteEntity> listar = new List<ClsClienteEntity>();

            using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["cndb"].ToString()))
            {
                SqlCommand cmd = new SqlCommand(sql, cn);
                cn.Open();
                SqlDataReader Rdr = cmd.ExecuteReader();

                while (Rdr.Read())
                {
                    listar.Add(cargarCliente(Rdr));
                }
                Rdr.Close();
                cn.Close();
            }
            return listar;          
        }


Botón Cargar Data (btncargar).
Por último en el evento click del botón Cargar Data de nuestro formulario Form1.cs se hace referencia al datagridview e invocamos nuestro evento CargarAll() que se encuentra en la clase ClsClienteDal.


private void btnCargar_Click(object sender, EventArgs e)
        {
            dataGridView1.DataSource = ClsClienteDal.CargarAll();
        }


Esto es el inicio para una nueva publicación sobre "ADO.Net - Mantenimiento".

La intenciones es brindarte un ejemplo práctico, aquí les dejo el código (C#) de esta pequeña publicación.



Comentarios

  1. Estuve bien tu tutorial de ADO.Net -Recuperar datos con DataReader.

    Te doy un consejo, si este ejemplo que vos publicas es para un nivel de prinicipiante, tenes que ser un poco mas claro y ser detallista, si realmente sos desarrollador tenes que tratar que la otra persona que intenta hacer los ejemplos, puede no saber nada de ADO:NET. Porque el tutorial le falta mas explicaciones basicas como ser, como instanciar un DataReader.

    Saludos.

    ResponderBorrar

Publicar un comentario

Entradas más populares de este blog

Habilitar Usuario HR Oracle

Al realizar la primera instalación del Oracle, el usuario HR por defecto está bloqueado y por ende no podemos loguearnos como dicho usuario, lo que debe hacer son los siguiente pasos, aplicables para Linux o Windows. 1. Conectarse como usuario system o sysdba + contraseña haciendo uso del comando connect . Usuario : system Password : xxxx  2. Hacer uso  del comando alter user hr account unlock desbloqueamos la cuenta. alter user hr account unlock; 3. Escribimos el comando alter user HR identified by hr; con esto estamos diciendo que la contraseña será hr. alter user HR identified by hr; 4. Ahora testeamos la conexión con el comando - conn hr/hr@xe . Si deseas después de conectarnos se puede realizar un select a la tabla employees del hr . Resultado del select realizado 5. Con todos estos pasos realizados ya podemos logearnos desde cualquier IDE como el usuario hr  y la contraseña hr que definimos en el paso 3.  Para finalizar nos logue

Usuario SYS y SYSTEM - ORACLE

Usuario SYS y SYSTEM Ambos usuario son creados de forma automática al crear la base de datos ORACLE y se  otorga el rol de DBA. SYS (password por defecto: CHANGE_ON_INSTALL). SYSTEM (password por defecto: MANAGER). Lo que se recomienda es cambiar el password de ambos usuarios por el tema de seguridad. SYS: Todas las tablas y vistas para el diccionario de datos de la base de datos están almacenados en el esquema SYS. Estas tablas y vistas son críticas para el funcionamiento de la base de datos ORACLE. Para mantener la integridad del diccionario de datos, las tablas del esquema SYS son manipulados solo por la base de datos. Nunca se debería modificar algo o crear tablas en el esquema del usuario SYS. SYSTEM: El usuario SYSTEM se utiliza para crear tablas y vistas adicionales que muestran información administrativa, tablas internas y vistas utilizado por varias opciones y herramientas de la base de datos ORACLE . No se recomienda  utilizar el esquema SYSTEM para almacenar t

Parámetro de entrada y salida – PL/SQL

Parámetro de entrada y salida – PL/SQL: Los parámetros de entrada y salida no son los parámetros de inicialización de la base de datos ORACLE. Los parámetros de entra y salida son utilizados mayormente en implementaciones de funciones, procedimientos almacenados o bloques de código bajo el lenguaje del PL/SQL, se considera que ambos parámetros (entra y salida) puedan realizar operaciones en el mismo bloque PL/SQL, es decir, si enviamos un parámetro de entrada hará que cumpla cierta operación y retornara los valores de salida de dicha operación procesada de acuerdo al parámetro de ingresado. Es de acuerdo al caso que nos presenta en la implementación. Algo importante al definir los parámetros, es saber y considerar cuántos tipos de parámetro existe si solo hablamos de entrada y salida, en realidad mi determinación seria 3 tipos: Parámetros: IN – entrada OUT – salida IN OUT – entrada salida Parámetro IN – entrada: El comportamiento común de estés tipos de parámetros es estar s

ASP.NET Core - Implementando CRUD en MVC con C#

Hola a todos, antes de iniciar cualquier desarrollo e implementación de una aplicación web haciendo uso de este magnifico Framework - ASP.NET Core ; comenzaremos con el desarrollo del ya conocido CRUD (Create, Read, Update and Delete). Como ya es conocido por muchos que Microsoft está escalando grandes pasos hacia el software libre acompañado de su IDEs como Visual Studio y Visual Studio Code. Requisitos: Microsoft Visual Studio Community 2019 Microsoft .NET Core, ASP.NET Core 2.1 Microsoft SQL Server 2017 (RTM-GDR) - Express Edition (64-bit) Framework Bootstrap (para mejorar el diseño de nuestra aplicación) Framework  jQuery Validation (para la validación de lado del cliente) Aquí dejo todos los pasos a seguir: ASP.NET Core - CRUD en MVC con C# - Parte 1 ASP.NET Core - CRUD en MVC con C# - Parte 2 ASP.NET Core - CRUD en MVC con C# - Parte 3 Puedes descargar la fuente desde: Agradecer de antemano por la acogida de este nuevo artículo publicado acerca cómo Implemen

ASP.NET Core - Crear Web API con C# y EF

Que tal a todos, hoy quiero compartirles acerca de la creación de Web API con C# y EF, bueno comencemos con algo de explicación acerca de la arquitectura que se detalla en el diagrama (gráfica) de despliegue. La arquitectura esta compuesto básicamente por 4 nivel de infraestructura, quiere decir que se inicia con la interfaz del cliente , la Web API como tal, el servidor de aplicaciones donde se encuentra alojado la Web API y finalmente con el con el servidor  de base de datos donde se encuentra alojado la base de datos. Mencionar que esta arquitectura esta basado para On-Premise (en local), quiere decir que los servidores de aplicación y base de datos estarán dentro de la infraestructura de la organización (no cloud computing). Revisemos algo de teoría: API significa interfaz de programación de aplicaciones , es decir es un conjunto de definiciones y protocolos que se utiliza para desarrollar e integrar entre software de distintas aplicaciones, que nos permiten que sus