Publicado el 15 de Junio del 2018
661 visualizaciones desde el 15 de Junio del 2018
4,4 MB
65 paginas
Creado hace 11a (14/06/2012)
Diplomado de
Especialización en .NET
Modulo 2: Tecnologías de acceso a
datos
M.C. Gerardo Beltrán Gutiérrez
Introducción ADO .NET
Definición
• ADO.NET provee un acceso consistente entre
fuentes de datos, como MSSQL, OLEDB, XML, etc.
• ADO.NET provee mecanismos para ejecutar
comandos y obtener los resultados.
• Cada vez es más común codificar información en
XML para pasarla a trabes de conexiones de red.
Este modelo es muy diferente al modelo de la era
cliente/servidor donde se mantenía una conexión
abierta durante la ejecución de un programa.
• ADO.NET fue diseñado para las solucionar las
necesidades de este nuevo modelo, con una
arquitectura desconectada, integración con XML,
representación común de los datos y la posibilidad de
combinar datos de varias fuentes de datos.
Proveedores de datos
• Un proveedor de datos de .NET es usado para conectarse a una
base de datos, ejecutar comandos y obtener los resultados.
• NET Provee los siguientes proveedores de datos:
• Además de estos hay varios otros proveedores de datos para otros
– MSSQL Server 7.0 o superior.
– OLEDB
– ODBC
– ORACLE
manejadores de bases de datos, como:
– Npgsql para PostgreSQL
– IBM DB2
– SQL Lite
– Sybase
– Firebird e Interbase
– MySQL
– Db4objects
– Etc.
Proveedores de datos
• Es recomendable utilizar un proveedor de datos
especifico para el manejador de base de datos a
usar si esta está disponible, ya que este
aprovecha completamente las características de
este, mejorando el rendimiento y la funcionalidad
ofrecida.
• La nomenclatura de las clases de ADO.NET es
sencilla. Dependiendo de el proveedor de datos
el nombre de las clases cambia, la nomenclatura
usada es <Proveedor>Nombre de clase.
ADO .NET Modelo
Desconectado
Definición
ADO.NET permite el acceso desconectado a datos.
En este modelo se llena un DataSet a través de
un DataAdapter.
Cada proveedor de datos debe de brindar su
DataAdapter, el cual debe de ser el encargado
de llenar un DataSet y actualizar la base de
datos según los cambios en el DataSet.
El DataSet es una colección de DataTable, cada
una de ellas contiene DataRow y DataColumn.
DataSet
DataTable
DataColumn
DataRow
Restricciones
DataSet
DataTable
Relaciones
Esquema XML
XML
Clases del Modelo Desconectado
• DataSet
• DataTable
• DataColumn
• DataRow
Ejemplo
//Crea Dataset
Datos = new DataSet("CuentaBancaria");
//Crea un DataTable
DataTable tablaClientes = new DataTable("clientes");
DataColumn colNumcta = new DataColumn("numcta", typeof(int));
DataColumn colNombre = new DataColumn("nombre", typeof(string));
DataColumn colApellidos = new DataColumn(“apellidos", typeof(string));
/ DataColumn colSaldo = new DataColumn("saldo", typeof(double));
// Crea las columnas para el DataTable
tablaClientes.Columns.Add(colNumcta);
tablaClientes.Columns.Add(colNombre);
tablaClientes.Columns.Add(colApellidos);
tablaClientes.Columns.Add(colSaldo);
// Agrega la Tabla al DataSet
Datos.Tables.Add(tablaClientes);
Ejemplo…
// Crea nuevo Cliente
DataRow nuevoCliente = Datos.Tables["clientes"].NewRow();
// Asigna datos al nuevo cliente
nuevoCliente["numcta"] = 123;
nuevoCliente["nombre"] = "Claudia";
nuevoCliente[“apellidos"] = "Lopez";
nuevoCliente["saldo"] = 1500.55;
// Agrega nuevo cliente a tabla de clientes
Datos.Tables["clientes"].Rows.Add(nuevoCliente);
Ejemplo
//Crea Dataset
Datos = new DataSet("CuentaBancaria");
//Crea un DataTable
DataTable tablaClientes = new DataTable("clientes");
// Crea las columnas para el DataTable
tablaClientes.Columns.Add(new DataColumn("numcta", typeof(int)));
tablaClientes.Columns.Add(new DataColumn("nombre", typeof(string)));
tablaClientes.Columns.Add(new DataColumn(“apellidos”, typeof(string)));
tablaClientes.Columns.Add(new DataColumn("saldo", typeof(double)));
// Agrega la Tabla al DataSet
Datos.Tables.Add(tablaClientes);
// Crea nuevo Cliente
DataRow nuevoCliente = Datos.Tables["clientes"].NewRow();
// Asigna datos al nuevo cliente
nuevoCliente["numcta"] = 123;
nuevoCliente["nombre"] = "Claudia";
nuevoCliente[“apellidos"] = “Lopez";
nuevoCliente["saldo"] = 1500.55;
Propiedades de Columna
• Datatype. Establece el tipo de dato a almacenar, el valor prestablecido
• Unique . Permite la existencia de valores repetidos, el valor
• AutoIncrementStep. Establece el incremento para un campo
incremental, el valor prestablecido es 1.
es string
prestablecido es false
prestablecido es true.
en el constructor.
prestablecido es n.
prestablecido es 0.
• AllowDBNull. Permite que no tenga información la columna, el valor
• Caption. Es el nombre de la columna por default es el valor establecido
• AutoIncrement. Establece si el campo es de auto incremento, el valor
• AutoIncrementSeed. Establece el valor inicial de la columna, el valor
Columna como llave primaria
• Generalmente, una tabla de base de datos tiene una columna o
grupo de columnas que identifican de manera exclusiva cada fila
de la tabla. Esta columna o grupo de columnas de identificación
se denomina llave primaria.
• Al identificar una única DataColumn como la PrimaryKey para
una DataTable, la tabla establece automáticamente la
propiedad AllowDBNull de la columna como false y la
propiedad Unique como true. Para las llaves primarias de
varias columnas sólo se establece de forma automática la
propiedad AllowDBNull en false.
• La propiedad PrimaryKey de una DataTable recibe como valor
una matriz de uno o varios objetos DataColumn, como se
muestra en los ejemplos siguientes. En el ejemplo se define una
sola columna como llave primaria.
tablaClientes.PrimaryKey = new DataColumn[] {
tablaClientes.Columns["numcta"] };
Columnas Calculadas
• En ocasiones es necesario contar con columnas
con información generada a partir de otras
columnas.
tablaClientes.Columns["NombreCompleto"].Expression =
"nombre + ‘ ’ + apellidos";
Serialización XML
WriteXML
Archivo
XML
Objeto
DataSet
ReadXML
Archivo
XML
Métodos para Serialización XML
• DataSet ofrece manejo directo de documentos y
esquemas XML
– ReadXml(string ArchXML)
– ReadXmlSchema(string ArchXML)
– WriteXml(string ArchXSD)
– WriteXmlSchema(string ArchXSD)
Ejemplo
Datos = new DataSet();
…
// Guarda el esquema del DataSet
Datos.WriteXmlSchema(@"c:\users\gerardo\datos.xsd");
// Guarda ls Datos en formato xml
Datos.WriteXml(@"c:\users\gerardo\datos.xml");
…
// Recupera el esquema del DataSet
Datos.ReadXmlSchema(@"c:\users\gerardo\datos.xsd");
// Recupera los Datos en formato xml
Datos.ReadXml(@"c:\users\gerardo\datos.xml");
Eliminación de DataRow
• Delete (). Elimina un DataRow
•
Datos.Tables["clientes"].Rows[0].Delete();
Cambiar un DataRow
Datos.Tables["clientes"].Rows[0][“cuenta”]=890;
Datos.Tables["clientes"].Rows[0][“nombre”]=“Jose”;
Datos.Tables["clientes"].Rows[0][“apellidos”]=“Lopez”;
Control de Cambios
• Mientras se están realizando cambios en un
conjunto de datos mediante la actualización,
inserción y eliminación de registros, el conjunto
de datos mantiene las versiones original y actual
de los registros.
• Se puede realiza el seguimiento de la propiedad
RowState de cada fila para indicar si los
registros están en su estado original o si se han
modificado, agregado o eliminado.
Control de Cambios
• Se puede confirmar los cambios llamando al método
AcceptChanges de DataSet, DataTable o DataRow.
• Cada fila de datos contiene información sobre la
propiedad RowState ( Added, Modified, Deleted,
Unchanged).
• Al llamar a AcceptChanges, cualquier objeto
DataRow que aún esté en el modo de edición finaliza
correctamente el proceso de edición. La propiedad
RowState de cada DataRow también cambia; las
filas en estado Added y Modified se convierten en
Unchanged, y se quitan las filas Deleted.
Control de Cambios
• Al llamar a AcceptChanges, cualquier objeto
DataRow que aún esté en el modo de edición
finaliza correctamente el proceso de edición. La
propiedad RowState de cada DataRow también
cambia; las filas en estado Added y Modified se
convierten en Unchanged, y se quitan las filas
Deleted.
• Al invocar al método RejectChanges se cancelar
cualquier edición, la fila vuelve a sus valores
anteriores y la propiedad RowState permanece
sin cambios.
Busquedas en DataTable
• Select(). Obtiene una vector de todos los objetos
DataRow
DataRow []info =null;
info = Datos.Tables["clientes"].Select();
if (info != null)
{
for (int i = 0; i < info.Length;i++ )
Console.WriteLine("{0} {1}",info[i]["numcta"], info[i]["nombre"]);
}
Busquedas en DataTable
– Select (string criterio). Obtiene una vector de
todos los objetos DataRow que coinciden con los
criterios de filtro por orden de clave principal (o si
ésta no existe, por orden de adición).
info = Datos.Tables["clientes"].Select("nombre = 'claudia‘ ");
if (info != null)
{
for (int i = 0; i < info.Length; i++ )
Console.WriteLine("{0} {1}",info[i]["numcta"], info[i]["nombre"]);
}
Busquedas en DataTable
• Select(string criterio, string ordenar). Obtiene
una matriz de todos los objetos DataRow que
coinciden con los criterios de filtro, en el criterio
de ordenación especificado.
info = Datos.Tables["clientes"]. Select("numcta< 10020", "nombre ASC");
if (info != null)
{
for (int i = 0; i < info.Length; i++ )
Console.WriteLine("{0} {1}",info[i]["numcta"],
Comentarios de: Modulo 2: Tecnologías de acceso a datos - Diplomado de Especialización en .NET (0)
No hay comentarios