0 évaluation0% ont trouvé ce document utile (0 vote)
316 vues12 pages
ADO.NET proporciona clases para el acceso a datos que permiten la conexión y manipulación de bases de datos. Incluye objetos para establecer conexiones (Connection), enviar comandos (Command), leer resultados (DataReader), y transferir datos entre el origen de datos y conjuntos de datos (DataAdapter). También incluye una capa desconectada que permite almacenar y manipular datos sin estar conectado al origen.
ADO.NET proporciona clases para el acceso a datos que permiten la conexión y manipulación de bases de datos. Incluye objetos para establecer conexiones (Connection), enviar comandos (Command), leer resultados (DataReader), y transferir datos entre el origen de datos y conjuntos de datos (DataAdapter). También incluye una capa desconectada que permite almacenar y manipular datos sin estar conectado al origen.
ADO.NET proporciona clases para el acceso a datos que permiten la conexión y manipulación de bases de datos. Incluye objetos para establecer conexiones (Connection), enviar comandos (Command), leer resultados (DataReader), y transferir datos entre el origen de datos y conjuntos de datos (DataAdapter). También incluye una capa desconectada que permite almacenar y manipular datos sin estar conectado al origen.
Introduccin La mayora de las aplicaciones actuales guardan su informacin en bases de datos por lo que necesitan acceder a ellas ya sea de forma local o remota.
Qu es ADO.NET? Visual Basic .NET utiliza la tecnologa ADO.NET (Activex Data Object) que permite el acceso a bases de datos mediante proveedores para sistemas administradores de bases de datos que funcionan en el entorno .NET.
ADO.NET es un avanzado modelo de Bases de Datos para acceder a SGBDR. Incluye una serie de proveedores que actan como intermediarios entre la base de datos y la aplicacin: SqlClient OracleClient OleDB ODBC Como cualquier otro modelo de acceso a datos, ADO.NET es un conjunto de clases relacionadas entre s que estn especializadas en ofrecer toda la funcionalidad que un programador necesita para realizar acceso a datos y manejarlos una vez los ha obtenido.
Las clases genricas expuestas por ADO.NET se encuentran bajo el espacio de nombres System.Data. Este espacio de nombres define clases genricas de acceso a datos que posteriormente son extendidas para ofrecer caractersticas y funciones especficas de cada proveedor.
El objeto ms importante a la hora de trabajar con el nuevo modelo de acceso a datos es el DataSet. Sin exagerar demasiado podramos calificarlo casi como un motor de datos relacionales en memoria. Arquitectura de ADO.NET El concepto ms importante que hay que tener claro sobre ADO.NET es su modo de funcionar, que se revela claramente al analizar su arquitectura:
Existen dos capas fundamentales dentro de su arquitectura: la capa conectada y la desconectada.
La capa conectada La capa conectada de ADO.NET contiene objetos especializados en la conexin con los orgenes de datos. As, la clase genrica Connection se utiliza para establecer conexiones a los orgenes de datos. La clase Command se encarga de enviar comandos de toda ndole al origen de datos. Por fin la clase DataReader est especializada en leer los resultados de los comandos. La clase DataAdapter hace uso de las tres anteriores para actuar de puente entre la capa conectada y la desconectada como veremos despus.
Estas clases son abstractas, es decir, no tienen una implementacin real de la que se pueda hacer uso directamente. Es en este punto en donde entran en juego los proveedores de datos. Cada origen de datos tiene un modo especial de comunicarse con los programas que los utilizan, adems de otras particularidades que se deben contemplar.
Los proveedores de acceso a datos es la capa inferior de la parte correspondiente al acceso de datos y es la responsable de establecer la comunicacin con las fuentes de datos, proporcionan el puente entre las bases de datos y las aplicaciones.
Se utilizan para conectarse a la base de datos, recuperar informacin y ejecutar rdenes contra la misma y son dependientes del gestor de datos utilizado
La plataforma .NET proporciona "de serie" los siguientes proveedores de acceso a datos. Proveedor Espacio de nombres Descripcin ODBC .NET Data Provider System.Data.Odbc Permite conectar nuestras aplicaciones a fuentes de datos a travs de ODBC. OLE DB .NET Data Provider System.Data.OleDb Realiza la conexin utilizando un proveedor OLEDB, al igual que el ADO clsico. Oracle Client .NET Data Provider System.Data.OracleClient Proveedor de datos para acceder a Oracle. SQL Server .NET Data Provider System.Data.SqlClient Permite la conexin optimizada a SQL SERVER
Los proveedores de acceso a datos que distribuye Microsoft en ADO.NET y algunos desarrollados por otras empresas o terceros, contienen los mismos objetos, aunque los nombres de stos, sus propiedades y mtodos, pueden ser diferentes.
As, por ejemplo, las clases especficas para acceder a SQL Server se llaman SqlConnection, SqlCommand, SqlDataReader y SqlDataAdapter y se encuentran bajo el espacio de nombres System.Data.SqlClient.
Veamos una a una los diferentes objetos:
EL OBJETO CONNECTION Este objeto es el encargado de establecer una conexin fsica con una base de datos determinada. Para establecer la conexin con una determinada fuente de datos, no slo debemos establecer la cadena de conexin correctamente, sino que adems deberemos usar los parmetros de conexin y el proveedor de acceso a datos adecuado. Tanto si se trabaja en modo conectado como sin conexin, lo primero que se debe hacer con una fuente de datos es abrir una conexin en ella. Esto implica que se crea un objeto Connection que conecta con la base de datos especificada.
Dispone entre otras de las siguientes propiedades y mtodos: Propiedades:
ConnectinString. Cadena utilizada para conectar con la fuente de datos.
ConectionTimeout. Nmero de segundos despus del cual una conexin fallida se interrumpe. Es de slo lectura, ya que este valor se configura en la propiedad ConnectionString. El valor predeterminado es de 15 segundos.
Mtodos: Open. Abre la conexin.
Close. Cierrra la conexin y libera todas las fuentes de datos asociadas.
BeginTransation. Comienza una transaccin de base de datos utilizando el nivel de aislamientos especificado en el argumento opcional.
EL OBJETO COMMAND Una vez abierta una conexin se puede elegir entre trabajar en modo conectado o desconectado. En modo conectado, lo normal es crear un objeto Command que contenga una consulta a una base de datos y a continuacin ejecutar el mtodo Executexxxx que corresponda con el tipo de consulta: De seleccin para obtener datos de la BD De accin para actualizar datos en la BD
Propiedades: Connection. Obtiene o establece el objeto Connection de este comando.
CommandText. String. Obtiene o establece la instruccin SQL, nombre de la tabla o procedimiento almacenado, que se va a ejecutar en el origen de datos.
CommandType. Obtiene o establece un valor que indica el tipo de consulta. Es decir, cmo se interpreta la propiedad CommandText. Sus valores pueden ser: Text. Sentencia SQL (por defecto) StoredProcedure. Procedimiento almacenado TableDirec. Tabla
Mtodos: Cancel. Cancela la ejecucin del comando.
Para lectura de datos: ExecuteNonQuery. Ejecuta la consulta de accin y devuelve el nmero de filas afectadas.
ExecuteReader. Ejecuta una consulta de seleccin y devuelve un objeto DataReader que permite acceder al resultset (Conjunto de filas y columnas obtenidas por la consulta). ExecuteScalar. Ejecuta la consulta y devuelve un valor escalar. Es decir, devuelve la primera columna de la primera fila del conjunto de resultados devuelto por la consulta. Funciona con cualquier consulta SQL y devuelve el primer campo de la primera fila.
EL OBJETO DATAADAPTER Este objeto es quizs el objeto ms complejo y a la vez complicado de todos los que forman parte de un proveedor de acceso a datos en .NET. Cuando deseamos establecer una comunicacin entre una fuente de datos y un DataSet, utilizamos como intermediario a un objeto DataAdapter.
A su vez, un DataAdapter contiene 4 objetos que debemos conocer:
SelectCommand es el objeto encargado de realizar los trabajos de seleccin de datos con una fuente de datos dada. En s, es el que se encarga de devolver y rellenar los datos de una fuente de datos a un DataSet. DeleteCommand es el objeto encardago de realizar las acciones de borrado de datos. InsertCommand es el objeto encardago de realizar las acciones de insercin de datos. UpdateCommand es el objeto encardago de realizar las acciones de actualizacin de datos.
Los objetos DeleteCommand, InsertCommand y UpdateCommand son los objetos que se utilizan para manipular y transmitir datos de una fuente de datos determinada, al contrario del objeto SelectCommand que tan slo interacta con la fuente de datos para recuperar una porcin o todos los datos indicados en el objeto Command anteriormente comentado.
EL OBJETO DATAREADER Este objeto es el utilizado en una sola direccin de datos. Establece una conexin en un modo de solo lectura. Se trata de un objeto de acceso a datos muy rpido. Este objeto puede usar a su vez el objeto Command o el mtodo ExecuteReader.
LA CAPA DESCONECTADA Una vez que ya se han recuperado los datos desde un origen de datos la conexin a ste ya no es necesaria. Sin embargo sigue siendo necesario trabajar con los datos obtenidos de una manera flexible.
Es aqu cuando la capa de datos desconectada entra en juego. Adems, en muchas ocasiones es necesario tratar con datos que no han sido obtenidos desde un origen de datos relacional con el que se requiera una conexin.
A veces nicamente necesitamos un almacn de datos temporal pero que ofrezca caractersticas avanzadas de gestin y acceso a la informacin.
Finalmente otro motivo por el que es importante el uso de los datos desconectado de su origen es la transferencia de informacin entre capas de una aplicacin. stas pueden encontrarse distribuidas por diferentes equipos, e incluso en diferentes lugares del mundo gracias a Internet.
Por ello es necesario disponer de algn modo genrico y eficiente de poder transportar los datos entre diferentes lugares, utilizarlos en cualquiera de ellos y posteriormente tener la capacidad de conciliar los cambios realizados sobre ellos con el origen de datos del que proceden.
Todo esto y mucho ms es lo que nos otorga el uso de los objetos DataSet, ncleo central de la capa desconectada de ADO.NET.
EL DATASET
Almacena en la memoria cach del cliente los resultados de la consulta SQL establecida en un adaptador de datos. Los datos estn disponibles en modo desconectado Y Forman una pequea base de datos con informacin necesaria para la aplicacin.
Unin entre capa conectada y desconectada
La clase DataAdapter se ha incluido anteriormente en la capa conectada porque est implementada por cada proveedor de un modo diferente.
En realidad es una clase que pone sus pies en ambos mundos (conectado y sin conexin) y sirve de nexo entre ellos.
Un DataAdapter sabe cmo manejar correctamente los objetos proporcionados por su proveedor especfico (fundamentalmente los vistos: Connection, Command y DataReader) y proporciona mtodos para trasegar informacin desde el servidor a DataSets desconectados y viceversa haciendo uso de dichos objetos especficos del proveedor.
As, por ejemplo, el mtodo Fill de un DataAdapter se utiliza para introducir los resultados de una consula dentro de un DataSet para luego trabajar con ellos sin preocuparnos de su origen.
Del mismo modo su mtodo Update se utiliza para conciliar automticamente con el origen de datos los datos modificados en un DataSet mientras no haba conexin.
Como hemos dicho antes un DataSet podra asimilarse a un pequeo gestor de datos en memoria.
Como tal un DataSet permite mantener diversas tablas as como las relaciones entre ellas, incluso forzando que se cumplan restricciones de creacin y actualizacin, como en una base de datos "real". Para ello se apoya en el uso de otras clases especializadas que son las siguientes:
DataTable: representa una tabla o relacin de datos. Se puede asimilar a una tabla de un gestor de datos. Los datos obtenidos de una consulta de tipo SELECT de SQL se almacenan en un objeto de esta clase.
DataColumn: ofrece informacin sobre cada uno de los campos de los registros almacenados en un DataTable, como su nombre o su tipo.
DataRow: representa un registro de la tabla virtual definida por el DataTable. Contiene tantos elementos como campos tiene la tabla, cada uno del tipo definido por el objeto DataColumn correspondiente.
Constraint: las clases Constraint se emplean para definir resticciones en los tipos de datos contenidos en un DataTable. Por ejemplo se puede usar un objeto de esta clase para indicar que un determinado campo debe ser nico o que se trata de una clave externa que debe ser tenida en cuenta en actualizaciones o borrados en cascada.
DataRelations: define la relacin existente entre dos objetos DataTable. Normalmente se suelen utilizar un identificador comn a ambas tablas aunque pueden ser combinaciones de ms de uno de ellos. De este modo se sabe cmo obtener informacin de una tabla a partir de informacin en otra. Por ejemplo el identificador de una factura (su nmero, por ejemplo) puede servir para relacionar su registro con los registros de detalle de factura que estn contenidos en otra tabla.
DataView: representa una vista concreta de un DataTable. Normalmente se trata de ordenaciones o filtros sobre los datos originales. Todas las tablas disponen de una vista por dfecto (propiedad DefaultView) que ofrece los datos tal y como se han introducido en sta y es la vista que se usa habitualmente.
Entre los mtodos ms destacables de la clase DataSet podemos mencionar los siguientes.
Clear ( ). Elimina todos los datos almacenados en el objeto DataSet, vaciando todas las tablas contenidas en el mismo.
AcceptChanges ( ). Confirma todos los cambios realizados en las tablas y relaciones contenidas en el objeto DataSet, o bien los ltimos cambios que se han producido desde la ltima llamada al mtodo AcceptChanges.
GetChanges ( ). Devuelve un objeto DataSet que contiene todos los cambios realizados desde que se carg con datos, o bien desde que se realiz la ltima llamada al mtodo AcceptChanges.
HasChanges ( ). Devuelve true o false para indicar si se han realizado cambios al contenido del DataSet desde que fue cargado o bien desde que se realiz la ltima llamada al mtodo AcceptChanges.
RejectChanges( ). Abandona todos los cambios realizados en las tablas contenidas en el objeto DataSet desde que fue cargado el objeto o bien desde la ltima vez que se lanz el mtodo AcceptChanges.
Merge( ). Toma los contenidos de un DataSet y los mezcla con los de otro DataSet, de forma que contendr los datos de ambos objetos DataSet.