11/10/2009
Trabajo con base de datos C# .NET 2005 MCPD Ing. Cecilia Wiesse
MCPD Cecilia Wiesse
Contenido
Espacios de Nombre Arquitectura Definiciones Acceso a datos en C# .NET con ADO.NET
MCPD Cecilia Wiesse
1
11/10/2009
Espacios de nombres
System.Data System.Data.Common System.Data.SqlClient System.Data.OleDb … Microsoft.SqlServer.Server
MCPD Cecilia Wiesse
Arquitectura
MCPD Cecilia Wiesse
2
11/10/2009
Objetos Comunes Gestiona la conexión a una base de datos
Base de datos
Ejecuta un comando de consulta en la base de datos
Connection
Intercambia datos entre el conjunto de datos y la base de datos
Command Almacena datos en un caché distinto de la base de datos Proporciona acceso eficaz a un flujo de datos de sólo lectura
DataAdapter DataSet
DataReader MCPD Cecilia Wiesse
System.Data
Fundamento de la infraestructura de acceso a datos
Contiene clases de definición base de los objetos de datos DataColumn DataType DataRow DataTable DataSet
MCPD Cecilia Wiesse
3
11/10/2009
System.Data.Common
Clases base que determinan la funcionalidad de otras clases en los espacios de nombres específicos
DbDataAdapter DbCommand DbConnection DbDataReader …
MCPD Cecilia Wiesse
System.Data.SqlClient
Específica para acceder a bases de datos SQL Server©
Optimizada en su comunicación con dicha base Implementa formas específicas de los mismos objetos existentes en Common por herencia SqlDataAdapter SqlCommand SqlConnection …
MCPD Cecilia Wiesse
4
11/10/2009
System.Data.OleDb
Utiliza los proveedores OleDb para acceder a cualquier base de datos compatible, heredando de Common
OleDbDataAdapter OleDbCommand OleDbConnection
MCPD Cecilia Wiesse
Obteniendo datos
DataAdapter Connection
DataReader
Command
DataSet
TableAdapter Connection
Command
DataReader
DataTable MCPD Cecilia Wiesse
5
11/10/2009
Proveedores de datos Objetos de Proveedores de Datos .NET
Propósito
Objeto SQL Server
Objeto para un origen OLEDB
Connection
Provee conectividad a un Origen de Datos
SqlConnection
OleDBConnection
Command
Provee acceso a comandos de Base de Datos como Select, Delete, Insert y Update
SqlCommand
OleDBCommand
DataReader
Provee acceso a datos de solo lectura
SqlDataReader
OleDBDataReader
DataAdapter
Utiliza el objeto Connection para enlazar un objeto DataSet con un Proveedor de Datos. También permite actualizar los Datos en el origen a partir de las modificaciones hechas en el DataSet.
SqlDataAdapter
OleDBDataAdapter
MCPD Cecilia Wiesse
Acceso a datos con ADO.NET
Para acceder a los datos con ADO.NET es necesario un proveedor de datos .NET Framework.
El proveedor de datos se conecta a un base de datos y ejecuta las acciones pertinentes para recuperar resultados, que se copian a un DataSet, desde el cual se mostrará al usuario por pantalla desde un formulario. MCPD Cecilia Wiesse
6
11/10/2009
Estos proveedores de datos utilizan varios objetos para interactuar con la base de datos y la aplicación. Los elementos fundamentales son: Connection (SqlConnection (para SQL Server) u OleDBConnection (para bases de datos OleDB)):
Establece la conexión con la base de datos que se va a utilizar, mediante la llamada cadena de conexión.
Command (SqlCommand u OleDb Command):
ejecuta un comando en la base de datos (por ejemplo, Select * from clientes).
MCPD Cecilia Wiesse
DataReader (SqlDataReader u OleDBDataReader):
Se utiliza únicamente para leer de la base de datos. Con este objeto no podemos hacer ningún tipo de modificación en ninguna de las tablas de la base de datos.
·DataAdapter (SqlDataAdapter u OleDBDataAdapter):
Es el mediador entre el conjunto de datos y la base de datos. Éste llena el conjunto de datos (DataSet, DataTable, etc) con la información de la base de datos y después guarda las modificaciones realizadas en estos conjuntos de datos en la base de datos.
MCPD Cecilia Wiesse
7
11/10/2009
Conjunto de Datos
Almacenan los datos en memoria desconectada. La estructura es igual a la de una base de datos normal; dividido en tablas, y éstas en filas y columnas. Son conjuntos de datos los DataSet, DataTable, DataColumn, DataRow, DataRelation y Constraint.
Adaptador de Datos Hace de mediador entre la aplicación y la base de datos;. Primero vuelca la información de la base de datos en un conjunto de datos, y después también es el encargado de guardar las modificaciones realizadas por el usuario en la base de datos. Son adaptadores de datos los OleDBDataAdapter, SqlDataAdapter, OracleDataAdapter, OdbcDataAdapter, SqlDataReader, OleDBDataReader, OdbcDataReader, OracleDataReader MCPD Cecilia Wiesse
DataSet
El DataSet es la principal forma de guardar los datos utilizando ADO.NET. Los tres pasos esenciales que utiliza para manipular los datos son:
Acceder a la Base de Datos y mostrar los datos en el formulario. Manipular los datos. Retornar los datos para actualizar la Base de Datos.
MCPD Cecilia Wiesse
8
11/10/2009
Ejemplo de BDD
En una Compra-Venta de autos usados se manejan los datos de los vehículos existentes en el momento. Para poder utilizar información adecuada, se entiende que un auto es un objeto de tipo vehículo, y como tal posee ciertas características determinables: Marca y Modelo, Patente, Número de Puertas, Cilindraje, Color. Aplicando los conceptos mencionados de Bases de Datos y debemos obtener nuestro diagrama de datos con las tablas necesarias.
MCPD Cecilia Wiesse
Ejemplo de tabla Autos
MCPD Cecilia Wiesse
9
11/10/2009
SQL
Actualizar UPDATE
Oradores SET Nombre = 'Nombre', Apellido = 'Apellido', EsInternacional = 1 where Id=3
Insertar INSERT INTO Oradores (Nombre, Apellido, EsInternacional) VALUES (N'Nombre', N'Apellido', 1) where Id=3
Eliminar DELETE FROM Oradores WHERE (Id = 3)
MCPD Cecilia Wiesse
Actualizando datos Connection
Command ExecuteNonQuery
DataAdapter TableAdapter Connection
CommandA CommandE CommandI
Update MCPD Cecilia Wiesse
10
11/10/2009
¿Qué es un entorno conectado?
Un entorno conectado es aquel en que los usuarios están conectados continuamente a una fuente de datos Ventajas:
El entorno es más fácil de mantener La concurrencia se controla más fácilmente Es más probable que los datos estén más actualizados que en otros escenarios
Inconvenientes:
Debe existir una conexión de red constante Escalabilidad limitada
MCPD Cecilia Wiesse
¿Qué es un entorno desconectado?
Un entorno desconectado es aquel en el que los datos pueden modificarse de forma independiente y los cambios se escriben posteriormente en la base de datos Ventajas:
Las conexiones se utilizan durante el menor tiempo posible, permitiendo que menos conexiones den servicio a más usuarios Un entorno desconectado mejora la escalabilidad y el rendimiento de las aplicaciones
Inconvenientes:
Los datos no siempre están actualizados Pueden producirse conflictos de cambios que deben solucionarse
MCPD Cecilia Wiesse
11
11/10/2009
Conexión SqlConnection SqlConn = new SqlConnection("server=localhost;uid=sa;pwd=;database=PUBS"); SqlConn.Open(); Using System.Data.OleDb; OleDbConnection OledbConn = new OleDbConnection("Provider=SQLOLEDB;Data Source=localhost;UID=sa;PWD=;Initial Catalog=pubs"); OledbConn.Open(); Using System.Data.Odbc; OdbcConnection OdbcConn = new OdbcConnection("DSN=Pubs;UID=sa;PWD=;"); OdbcConn.Open(); MCPD Cecilia Wiesse
Objetos command
El objeto Command tiene varios métodos Execute para ejecutar comandos a un origen de datos:
MCPD Cecilia Wiesse
12
11/10/2009
SqlClient
Using System.Data.SqlClient; SqlConnection SqlConn = new SqlConnection("server=localhost;uid=sa;pwd=;database=PUBS"); SqlCommand SqlCom = new SqlCommand("insert into jobs(job_desc, min_lvl, max_lvl) values('Webmaster', '25', '100')", SqlConn); SqlConn.Open(); SqlCom.ExecuteNonQuery (); SqlConn.Close();
MCPD Cecilia Wiesse
OleDb y Odbc
Using System.Data.OleDb; OleDbConnection OledbConn = new OleDbConnection ("server=localhost;uid=sa;pwd=;database=PUBS"); OleDbCommand OledbCom = new OleDbCommand ("insert into jobs(job_desc, min_lvl, max_lvl) values('Webmaster', '25', '100')", OledbConn); OledbConn.Open(); OledbCom.ExecuteNonQuery (); OledbConn.Close();
MCPD Cecilia Wiesse
13
11/10/2009
SqlCommand/ parámetros
Crear SQL con parámetros SqlCommand cmd = new SqlCommand( "select * from Customers where city = @City", conn);
Declarar los parámetros SqlParameter param = new SqlParameter(); param.ParameterName = "@City"; param.Value = inputCity;
Adicionar parámetros al SqlCommand cmd.Parameters.Add(param);
MCPD Cecilia Wiesse
14