ALMACENAMIENTO Y ALMACENAMIENTO Y OBTENCIÓN DE DATOS OBTENCIÓN DE DATOS
CON ADO.NETCON ADO.NET
ACCEDER A DATOS CON ACCEDER A DATOS CON ADO.NETADO.NET
Tres niveles:Tres niveles:• El almacenamiento físico de datos. Puede ser El almacenamiento físico de datos. Puede ser
una base de datos OLE, SQL o un archivo XML.una base de datos OLE, SQL o un archivo XML.• El proveedor de datos. Consiste de objetos El proveedor de datos. Consiste de objetos
Connection y objetos comando para crear una Connection y objetos comando para crear una representación de los datos en memoria.representación de los datos en memoria.
• El conjunto de datos. Una representación en El conjunto de datos. Una representación en memoria de los datos y sus relaciones con los memoria de los datos y sus relaciones con los cuales se trabajan en la aplicación.cuales se trabajan en la aplicación.
Existen dos tipos de conexiones a base de Existen dos tipos de conexiones a base de datos en ADO.NET:datos en ADO.NET:• OleDbConnectionOleDbConnection• SqlDbConnectionSqlDbConnection
Conectarse a una Base de DatosConectarse a una Base de Datos
1.1. Del menú View, Del menú View, escoja Server escoja Server Explorer. Explorer.
2.2. En el Server En el Server Explorer, escoja la Explorer, escoja la opción Connect To opción Connect To Database. Se Database. Se despliega el cuadro despliega el cuadro de diálogo DataLink de diálogo DataLink Properties.Properties.
3.3. Seleccione el tipo de Seleccione el tipo de proveedor.proveedor.
Conectarse a una Base de DatosConectarse a una Base de Datos
1.1. En el Tab Connection En el Tab Connection especifique la base especifique la base de datos a la cual de datos a la cual conectarse. conectarse.
2.2. Asegúrese de que la Asegúrese de que la conexión quedó bien conexión quedó bien hecha con Test hecha con Test Connection. Presione Connection. Presione OK.OK.
Crear un Data SetCrear un Data Set
Click derecho en Click derecho en el objeto el objeto Adaptador y Adaptador y seleccionar seleccionar Generate DataSetGenerate DataSet
Seleccionar las Seleccionar las tablas que se tablas que se quieran añadirquieran añadir
Para desplegar un Data SetPara desplegar un Data Set Añada un control al formulario Web para mostrar el Data Set, Añada un control al formulario Web para mostrar el Data Set,
por ejemplo un DataGrid.por ejemplo un DataGrid. Establezca la propiedad del data source al control. Para el Establezca la propiedad del data source al control. Para el
DataGrid ponga en la propiedad DataSource el objeto DataSet DataGrid ponga en la propiedad DataSource el objeto DataSet creado y en DataMember la tabla que desee del DataSet.creado y en DataMember la tabla que desee del DataSet.
Escoja las columnas a mostrar.Escoja las columnas a mostrar. Añada código al procedimiento Page_Load para llenar el data Añada código al procedimiento Page_Load para llenar el data
set y ligar el DataSet al objeto control.set y ligar el DataSet al objeto control.
private void Page_Load(object sender, System.EventArgs e)private void Page_Load(object sender, System.EventArgs e) {{ // Fill the data set.// Fill the data set. sqlDataAdapter1.Fill(DataSet1);sqlDataAdapter1.Fill(DataSet1); // Update the DataGrid.// Update the DataGrid. DataGrid1.DataBind();DataGrid1.DataBind(); }}
Cómo ADO se refiere a los Cómo ADO se refiere a los objetosobjetos
Cuando se crean los objetos connection, Cuando se crean los objetos connection, adapter y dataset en tiempo de diseño, se adapter y dataset en tiempo de diseño, se habilita la opción de habilita la opción de typingtyping. . Ejemplo:Ejemplo:
Añadir una filaAñadir una fila
Utilice la colección Rows del DataSet. Utilice la colección Rows del DataSet. Para añadir una fila, cree un objeto Para añadir una fila, cree un objeto
Row y añadirla a la colección Rows.Row y añadirla a la colección Rows.
Modificar y Borrar una filaModificar y Borrar una fila
Crear una conexión en tiempo de Crear una conexión en tiempo de ejecuciónejecución
USO DE DATA SETS EN USO DE DATA SETS EN FORMULARIOS WEBFORMULARIOS WEB
Desplegar un Data Set Desplegar un Data Set en un DataGriden un DataGrid• Cree una conexión a Cree una conexión a
una base de datos, un una base de datos, un adaptador y un data adaptador y un data setset
• Añada un control Añada un control DataGrid al formulario DataGrid al formulario WebWeb
• Establezca la Establezca la propiedad DataSource propiedad DataSource del DataGrid al data del DataGrid al data setset
• Añada código al Añada código al evento Page_Load para evento Page_Load para llenar el data set llenar el data set desde el adaptador y desde el adaptador y ligarlo al DataGridligarlo al DataGrid
Desplegar un Data Set en un Desplegar un Data Set en un DataListDataList
1.1. Cree una conexión a una base de datos, Cree una conexión a una base de datos, un adaptador y un data setun adaptador y un data set
2.2. Añada un control DataList al formulario Añada un control DataList al formulario WebWeb
3.3. Establezca la propiedad DataSource del Establezca la propiedad DataSource del DataList al data setDataList al data set
4.4. Añada código al evento Page_Load para Añada código al evento Page_Load para llenar el data set desde el adaptador y llenar el data set desde el adaptador y ligarlo al DataListligarlo al DataList
5.5. Edite las plantillas del encabezado, item Edite las plantillas del encabezado, item y separador del control DataList para y separador del control DataList para crear la apariencia del DataListcrear la apariencia del DataList
Desplegar datos en otros Desplegar datos en otros controles de listascontroles de listas
Para desplegar ítems de un conjunto de Para desplegar ítems de un conjunto de datos en un ListBox, DropDownList, datos en un ListBox, DropDownList, CheckBoxList o RadioButtonList, haga:CheckBoxList o RadioButtonList, haga:• Establezca la propiedad DataSource del control Establezca la propiedad DataSource del control
al data setal data set• Establezca la propiedad DataText al miembro Establezca la propiedad DataText al miembro
del data set para desplegar como la propiedad del data set para desplegar como la propiedad Text del ítem de la listaText del ítem de la lista
• Establezca la propiedad DataValue del miembro Establezca la propiedad DataValue del miembro del data set para retornar la propiedad Value del data set para retornar la propiedad Value del ítem de la listadel ítem de la lista
• En código, llene el data set y únalo al control En código, llene el data set y únalo al control
Ejecución de comandos en una Ejecución de comandos en una base de datosbase de datos
Provee tres métodos para ejecutar Provee tres métodos para ejecutar comandoscomandos• ExecuteScalarExecuteScalar. Realiza comandos que retornan . Realiza comandos que retornan
un valor, tales como la cantidad de registros en un valor, tales como la cantidad de registros en una tabla. una tabla.
• ExecuteNonQueryExecuteNonQuery. Realiza comandos que . Realiza comandos que cambian la base de datos pero no retornan cambian la base de datos pero no retornan nada. Esto incluye añadir y borrar datos de una nada. Esto incluye añadir y borrar datos de una base de datos.base de datos.
• ExecuteReaderExecuteReader. Lee registros de manera . Lee registros de manera secuencial de una base de datos.secuencial de una base de datos.
PROCESAMIENTO DE PROCESAMIENTO DE TRANSACCIONESTRANSACCIONES
Una transacción es un grupo de comandos Una transacción es un grupo de comandos de la base de datos que se tratan como de la base de datos que se tratan como una sola unidad. Los comandos una sola unidad. Los comandos pertenecen a una transacción si son:pertenecen a una transacción si son:• AtómicosAtómicos. Realizan una única unidad de trabajo. Realizan una única unidad de trabajo• ConsistentesConsistentes. Todas las relaciones entre los . Todas las relaciones entre los
datos de la base de datos se mantienen datos de la base de datos se mantienen correctamentecorrectamente
• AisladosAislados. Los cambos hechos por otros clientes . Los cambos hechos por otros clientes no afectan los cambios actuales.no afectan los cambios actuales.
• DurablesDurables. Una vez se realiza un cambio, es . Una vez se realiza un cambio, es permanente. permanente.
Comprender las transaccionesComprender las transacciones
En una aplicación Web las transacciones son En una aplicación Web las transacciones son importantes, puesto que las bases de datos son importantes, puesto que las bases de datos son un recurso compartido entre muchos clientes. Se un recurso compartido entre muchos clientes. Se puede presentar los siguientes problemas:puede presentar los siguientes problemas:• Contención por recursosContención por recursos. Varios clientes pueden intentar . Varios clientes pueden intentar
cambiar el mismo registro al mismo tiempocambiar el mismo registro al mismo tiempo• Fallos inesperadosFallos inesperados. El Internet no es la red más . El Internet no es la red más
confiable. Los clientes pueden desconectarse confiable. Los clientes pueden desconectarse inesperadamenteinesperadamente
• Ciclo de vida de la aplicaciónCiclo de vida de la aplicación. Los formularios Web viven . Los formularios Web viven solo por un instante, un cliente puede dejar la aplicación solo por un instante, un cliente puede dejar la aplicación en cualquier momento con solo escribir una nueva en cualquier momento con solo escribir una nueva dirección en su browserdirección en su browser
Manera de tratar una transacciónManera de tratar una transacción
Los Data sets hacen el procesamiento de una transacción a Los Data sets hacen el procesamiento de una transacción a través de los métodos RejectChanges y Updatetravés de los métodos RejectChanges y Update. Los data sets . Los data sets también proveen el método AcceptChanges que restaura el también proveen el método AcceptChanges que restaura el estado de los registros en un data set a no cambiados.estado de los registros en un data set a no cambiados.
Los objetos de conexión a la base de datos proveen el Los objetos de conexión a la base de datos proveen el procesamiento de transacciones a través del objeto procesamiento de transacciones a través del objeto transactiontransaction. El objeto transaction vigila los comandos . El objeto transaction vigila los comandos realizados y provee los métodos Rollback, Commit y Save realizados y provee los métodos Rollback, Commit y Save para restaura la base de datos, realizar los cambios o crear para restaura la base de datos, realizar los cambios o crear un punto de guarda dentro de una transacción.un punto de guarda dentro de una transacción.
El namespace System.EnterpriseServices provee El namespace System.EnterpriseServices provee transacciones de nivel de empresa a través de la clase transacciones de nivel de empresa a través de la clase ContexUtilContexUtil. Las transacciones de nivel de la empresa usan el . Las transacciones de nivel de la empresa usan el Microsoft Distributed Transaction Coordinator (DTC) que Microsoft Distributed Transaction Coordinator (DTC) que viene con el Microsoft SQL Server 200 para seguir las viene con el Microsoft SQL Server 200 para seguir las transacciones a través de varios formularios Web y a través transacciones a través de varios formularios Web y a través de varios componentes COM+de varios componentes COM+
Transacciones Data SetTransacciones Data Set
Los data sets proveen un Los data sets proveen un procesamiento de transacciones procesamiento de transacciones implícito. Los cambios en la base de implícito. Los cambios en la base de datos no se realizan hasta que se datos no se realizan hasta que se invoque el método invoque el método UpdateUpdate del del adaptador. adaptador.
Transacciones Data SetTransacciones Data Set
Transacciones Data SetTransacciones Data Set
Transacciones de base de datosTransacciones de base de datos
1.1. Abra una conexión a la base de datosAbra una conexión a la base de datos2.2. Cree el objeto transaction usando el método Cree el objeto transaction usando el método
BeginTransactionBeginTransaction del objeto connection. del objeto connection.3.3. Cree objetos comandos a ser rastreados dentro Cree objetos comandos a ser rastreados dentro
de esta transacción, asignado la propiedad de esta transacción, asignado la propiedad TransactionTransaction a cada comando con el nombre de a cada comando con el nombre de la transacción creada en el paso 2la transacción creada en el paso 2
4.4. Ejecute los comandosEjecute los comandos5.5. Realice los cambios a la base de datos o Realice los cambios a la base de datos o
restaure el estado de la base de datos, restaure el estado de la base de datos, dependiendo del éxito de los comandosdependiendo del éxito de los comandos
6.6. Cierre la conexiónCierre la conexión
Transacciones de base de datosTransacciones de base de datos
El objeto Transaction determina cómo los cambios El objeto Transaction determina cómo los cambios concurrentes se están manejando a través de la propiedad concurrentes se están manejando a través de la propiedad IsolationLevel.IsolationLevel.
Transacciones de nivel de la Transacciones de nivel de la empresaempresa
Para usar el DTC en un formulario Web haga:Para usar el DTC en un formulario Web haga:1.1. Cree una nueva transacción o continúe con una existente Cree una nueva transacción o continúe con una existente
estableciendo el atributo transaction del documentoestableciendo el atributo transaction del documento2.2. <%@ Page Language="vb" AutoEventWireup="false"<%@ Page Language="vb" AutoEventWireup="false"3.3. Codebehind="PageTransactions.aspx.vb" Codebehind="PageTransactions.aspx.vb" 4.4. Inherits="vbTransactionSnippet.PageTransactions" Inherits="vbTransactionSnippet.PageTransactions"
Transaction="RequiresNew"%>Transaction="RequiresNew"%>5.5. Añada una referencia al namespace Añada una referencia al namespace
SystemSystem..EnterpriseServicesEnterpriseServices6.6. Use los métodos Use los métodos SetAbortSetAbort y y SetCompleteSetComplete de la clase de la clase
ContextUtilContextUtil para cambiar el estatus de la transacción como para cambiar el estatus de la transacción como se deseese desee
7.7. Use los eventos Use los eventos CommitTransactionCommitTransaction y y AbortTransactionAbortTransaction de de la clase Page para responder a los cambios en el estado de la clase Page para responder a los cambios en el estado de la transacciónla transacción