Está en la página 1de 4

Programación I Ing.

Verónica Rosa de Rivera

UNIDAD IV – CONEXIÓN A BASES DE DATOS CON C#.


CONEXIÓN A BASES DE DATOS.

INTRODUCCIÓN.
ADO .NET es la tecnología de acceso a datos que viene en el .NET Framework. Y aunque su nombre
proviene de su predecesor (ADO, ActiveX Data Objects) no tiene casi nada en común con esa
tecnología. De hecho, maneja un paradigma conceptual completamente opuesto.
ADO, RDO, DAO y similares manejaban un modelo “conectado”, es decir, se ejecutaba una consulta
en la base de datos y se declaraban objetos que mantenían un “cursor” o apuntador al registro que
se deseaba leer. ADO proporcionaba métodos para navegar hacia adelante o hacia atrás en el grupo
de datos que devolvía la consulta para poder leerlos o modificarlos. Todo esto se hacía en vivo y en
directo sobre la base de datos. Esta tecnología tenía algunas desventajas, pero la principal es que se
necesita mantener una conexión abierta en todo momento para manipular los datos. De modo que,
si se tenían 20 licencias para conectarse a la base de datos, fácilmente podían ser saturadas con 20
usuarios que estuvieran utilizando la aplicación con alguna pantalla abierta, aunque no estuvieran
realizando ninguna actividad.
Sin embargo, ADO .NET maneja un modelo “desconectado”, principalmente porque el otro modelo
no es el más óptimo en ciertos tipos de aplicaciones como Web o dispositivos móviles. Es decir, la
idea es conectarse a la base de datos (o cualquier otro almacén de datos), hacer lo que se tenga que
hacer y desconectarse, liberando lo más rápido posible recursos de red, licencias, etcétera. Es
posible mantener una copia de los datos en memoria caché, y luego cuando se vuelva a conectar
simplemente se sincronizan los datos con los del servidor.

ACCESO A BASE DE DATOS.


ADO .NET permite acceder y usar los siguientes orígenes de datos:
• Bases de datos (Access, SQL Server, Oracle, MySQL etc.)
• Documentos XML.
• Objetos de negocios.
• Archivos de texto.
ADO .NET oculta el complejo proceso de acceso a datos y proporciona un nivel mucho mayor de
clases y objetos por medio de los cuales los datos son accedidos fácilmente. Estas clases ocultan
toda la codificación completa para conexión, recuperación, consulta y manipulación de datos.

1 de 4
Programación I Ing. Verónica Rosa de Rivera

RECUPERAR Y MOSTRAR DATOS.


Se necesitan dos tipos de controles para recuperar y mostrar datos en ADO .NET:
• Un control data source: administra la conexión a los datos, la selección de datos y otros
trabajos tales como paginado y almacenamiento de datos en caché.
• Un control data view: enlaza y muestra los datos, así como su manipulación.

DIAGRAMA DE CONEXIÓN.
De la arquitectura de ADO
.NET podemos apreciar que se
necesitan algunos objetos
para poder establecer
conexión a una base de datos
e interactuar con ella:
Connection y Command. El
diagrama siguiente muestra
los objetos que intervienen en
la conexión a una base de
datos.
En la parte inferior del
diagrama se tiene la base de
datos (u otro almacén de
datos), donde se encuentra
almacenada la información
que manejará la aplicación.
El siguiente objeto que se
muestra es la conexión
(Connection), el cual permite
establecer un canal de
comunicación hacia la base de
datos.
A continuación se tiene al
objeto comando (Command),
el cual contiene la instrucción
que se ejecutará sobre la base
de datos (SELECT, INSERT,
UPDATE, DELETE, EXECUTE).
La creación de estos dos objetos (Connection y Command) depende del proveedor de datos que
contiene la información que usará la aplicación: SQL Server, Access, Oracle, MySql, etc.
Por ejemplo, para trabajar con una base de datos SQL Server se utiliza SqlConnection y
SqlCommand; y para trabajar con Access se usa OleDbConnection y OleDbCommand.
2 de 4
Programación I Ing. Verónica Rosa de Rivera

Sin importar cuál proveedor de datos se utilice, los pasos siempre son los mismos:
1. Abrir la conexión. miConexion.Open();

2. Ejecutar los comandos. // Ejecutar los comandos

3. Cerrar la conexión. miConexion.Close();

Por ejemplo, si se desea usar una base de datos construida con SQL Server, se usaría lo siguiente:
// asumiendo que al principio se incluyó la librería
// using System.Data.SqlClient;
// para usar más fácilmente las clases del SQL Server Data Provider

SqlConnection miConexion = new SqlConnection("MiCadenaDeConexion");


miConexion.Open();
// Operaciones sobre la base de datos
miConexion.Close();

ESTABLECER UNA CONEXIÓN.


La conexión requiere de una cadena de conexión (ConnectionString) adecuada al proveedor de
datos, para indicarle a cuál base y con cuáles credenciales se va a conectar.
Por ejemplo:
using System.Data.SqlClient;

string MiCadenaDeConexion = @"Data Source=.\SQLEXPRESS;Initial Catalog=RentaVideos;


Integrated Security=True";
SqlConnection miConexion = new SqlConnection(MiCadenaDeConexion);
La cadena de conexión contiene los elementos siguientes:
a. Origen de datos.
b. Nombre de la base de datos.
c. Credenciales de conexión.
Ejemplos de construcción de una cadena de conexión:
1 "Data Source=(local);Initial Catalog=NombreBD;Integrated Security=True"
2 "Server=localhost;Database=NombreBD;UID=usuarioBD;PWD=contraseña"
3 "Data Source=tuServidor;Initial Catalog=NombreBD;User Id=usuarioBD;Password=contraseña"
4 "Data Source=.\InstanciaSQL;Initial Catalog= NombreBD;Integrated Security=SSPI"
SSPI = Security Support Provider Interface
NOTA: Como un recurso muy útil, puede encontrar cadenas de conexión a diferentes bases de
datos en el enlace siguiente:
http://www.connectionstrings.com/

3 de 4
Programación I Ing. Verónica Rosa de Rivera

DEFINIR UN COMANDO.
El comando sirve para especificar la operación que se ejecutará sobre los datos contenidos en la
base de datos y se especifica utilizando la propiedad CommandText. Además, se puede especificar el
tipo de comando que será ejecutado con la propiedad CommandType:
a. Text: Cualquier consulta, incluyendo comandos para manipular la base de datos.
b. StoredProcedure: Para ejecutar un procedimiento almacenado.
c. TableDirect: Para leer una tabla completa. Este no es soportado por algunos proveedores
de datos como SQL Server.
// Aún no se están ejecutando
SqlCommand cmd1 = new SqlCommand();
cmd1.Connection = miConexion;
cmd1.CommandType = System.Data.CommandType.Text;
cmd1.CommandText = "SELECT * FROM 'Peliculas'";

SqlCommand cmd2 = new SqlCommand();


cmd2.Connection = miConexion;
cmd2.CommandType = System.Data.CommandType.StoredProcedure;
cmd2.CommandText = "SelectPeliculas"; // Nombre de un SP en la BD

Para ejecutar las instrucciones, la clase SqlCommand proporciona 3 métodos principales:


• ExecuteNonQuery()—Para cuando la instrucción no regresa una respuesta, por ejemplo un
INSERT, UPDATE o DELETE
• ExecuteScalar()—Para cuando la instrucción regresa UN SOLO registro con UN SOLO
campo con un valor numérico, por ejemplo el resultado de la consulta "SELECT COUNT(*)
FROM MiTabla"
• ExecuteReader()—Para cuando se quiere leer el resultado de una o varias instrucciones
SELECT usando un DataReader.
// un INSERT utilizando SQL
int registrosAfectados = 0;
string miQuery = "INSERT INTO Peliculas (Titulo, FechaDeAdquisicion, Precio) " +
"VALUES ('Terminator Genesis','2014-08-01',19.78);";

SqlCommand cmd = new SqlCommand(miQuery, miConexion);


cmd.CommandType = System.Data.CommandType.Text;
registrosAfectados = cmd.ExecuteNonQuery(); // registrosAfectados = 1;

// ahora un SELECT COUNT(*) usando SQL


int numDeRegistros = 0;
string otroQuery = "SELECT COUNT(*) FROM Peliculas;";
SqlCommand comandoParaContar = new SqlCommand(otroQuery, miConexion);
numDeRegistros = Convert.ToInt32(comandoParaContar.ExecuteScalar());

// finalmente, un ejemplo de cómo leer todos los registros de una tabla


SqlCommand miCommando = new SqlCommand("SELECT * FROM Peliculas;", miConexion);
SqlDataReader drLector;
drLector = miCommando.ExecuteReader();

4 de 4

También podría gustarte