Sunteți pe pagina 1din 3

VB-MUNDO MEDIA CENTER

ADO vs ADO.NET
autor Pablo Tilotta
Tuesday, 06 de November de 2007
Modificado el Tuesday, 06 de November de 2007

En el primer libro de .NET que adquirí, uno de los capítulos mas importantes y resonantes era el de ADO.NET.
ADO vs ADO.NETADO vs ADO.NET

En el primer libro de .NET que adquirí, uno de los capítulos mas importantes y resonantes era el de ADO.NET.

Lamentablemente en ese libro ya me avisaban sobre un cambio terrible entre una versión y otra de ADO, y de alguna
manera daba la sensación de que el cambio seria tan grande que daban ganas de no continuar por ese camino.
En primer lugar pasaré a mencionarles (para el asombro de uds.) algunos de los términos que no se incluyen en
ADO.NET.

EOF
RECORDSET
MOVENEXT
MOVEFIRST
MOVELAST
MOVEPREVIOUS
RECORDCOUNT
Y seguramente muchos más que iré descubriendo con el paso del tiempo.

En ADO la cosa es más o menos así…

• Creamos una Conexión a la Base de Datos.


• Ejecutamos un comando y llenamos un Objeto RECORDSET con una tabla conformada por el resultado simple o
compuesto por varias tablas mediante una sentencia SQL.
• Mientras estamos conectados, recorremos y/o modificamos datos de nuestro Recordset los cuales se actualizan
en nuestras Bases de Datos.
• Cerramos la Conexión.

En ADO.NET la cosa cambia y bastante… veamos.

• Creamos un Objeto SqlClient.SqlConnection (Para SQL Server) o un Odbc.OdbcConnection (Para Clientes
ODBC) o OleDb.OleDbConnection (Para Clientes OleDB)
• Creamos un Objeto SQLDataAdapter o como corresponda SQL, ODBC u OLEDB (Luego detallaré la función de
cada componente).
• Creamos un Objeto Dataset el cual se llenará gracias a una instrucción del DataAdapter.
• El DataSet a diferencia del Recordset, puede contener multiples elementos DataTables o sea TABLAS.
• Inmediatamente posterior al llenado del DataSet, la conexión con la BD se cierra. Y se trabaja con los datos de
modo desconectado.
• Una vez que necesitemos actualizar los datos en nuestras BD el DataAdapter (que no es mas que una aplicación
de Interfase) reabre la conexión automáticamente y vuelca los cambios.
• Se cierra la conexión definitivamente.

En base a lo que hemos expresado, quedan innumerables cuestiones que aclarar y muchos misterios por develar.
Intentaré explicarlo de la manera mas clara como me sea posible.

CONNECTION

Ya no existe en ADO.NET un simple objeto Connection al cual se le indicaba el proveedor de SQL SERVER , o alguno
de ODBC u OLEDB. Ahora existe un Objeto Connection para cada una de estas variantes.

SQLClient.SQLConnection (SQL Server)


ODBCClient.ODBCConnection (ODBC)
OLEDBClient.OLEDBConnection (OLEDB)

Tanto SQLClient, como ODBCClient, como OLEDBClient, son colecciones que contienen muchísimos métodos y
propiedades inherentes a cada tipo de conexión en particular.

La sintaxis general es la siguiente…

http://www.mediacenter.vb-mundo.com Motorizado por Joomla! Generado: 20 January, 2011, 00:33


VB-MUNDO MEDIA CENTER

Private _SqlConexion As Data.SqlClient.SqlConnection

_SqlConexion = New SqlClient.SqlConnection


_SqlConexion.ConnectionString = ConexionStr
_SqlConexion.Open()

DATAADAPTER

El DataAdapter es uno de los participes necesarios mas importantes en este nuevo paradigma. Es ni mas ni menos que
el que hace todo entre la conexión y el DataSet, se encarga de conectar y desconectar los datos, de llevar la información
al DataSet y el de controlar cualquier tipo de inconsistencia entre los datos leidos y los reales a la hora de actualizar. Y
lo mas importante… todo eso lo hace solapadamente sin que el usuario deba preocuparse.
La sintaxis general es la siguiente….

Private _SqlDataAdap As Data.SqlClient.SqlDataAdapter


Private _Dataset As Data.DataSet

_Dataset = New Data.DataSet

_SqlConexion = New SqlClient.SqlConnection


_SqlConexion.ConnectionString = ConexionStr
_SqlConexion.Open()

_SqlDataAdap = New SqlClient.SqlDataAdapter(“Select * from clientes”,_SqlConexion)


_SqlDataAdap.Fill(_Dataset)

Como vemos en el código Ejemplo.. en el mismo DataAdapter ejecutamos el comando y luego mediante el método FILL
le adicionamos una DataTABLE a nuestro DataSet.
En caso de necesitar que un DataSet contenga multiples DataTables deberemos crear distintos Objetos DataAdapter y
todos colgados de la misma conexión y todos llenando mediante el método FILL al mismo DataSet.

Cuando EDITAMOS, ADICIONAMOS, BORRAMOS o UPDATEAMOS datos de nuestros DataSets, en el momento en


que indicamos al ADO.NET que queremos actualizar los cambios o novedades, el DataAdapter ReConecta a la BD y
compara los valores leidos originalmente con los que encuentra en ese momento… de haber cambios.. asume que
algun usuario ha modificado los datos mientras nosotros estabamos desconectados, y nos devuelve un error manejable
para que decidamos que hacer.

DATASET

El DataSet será nuestro Objeto Estrella… Todo lo haremos ahí, y tiene una arquitectura y una filosofia muy distinta
a los viejos RecordSets.
Por empezar.. puede contener varias tablas resultantes de multiples consultas.. Cada una de esas tablas se denomina
DataTable.

DataSet à DataTable(0)
à DataTable(1)

La manera de Recorrer cada DataTable es la misma en la que recorremos una GRILLA, y no existe el concepto de EOF
o BOF
No existen Registros sino ROWS y pueden recorrerse con un simple FOR NEXT o con un FOR EACH.

Ejemplo..

Recorrer

For i = 0 to MyDataSet.DataTable(0).Rows.Count -1
Messagebox.show MyDataSet.DataTable(0).rows(i)(“NombreCliente”)
Next

Como verán no existe el RECORDCOUNT !!! simplemente le pedimos la cantidad de Rows, al igual que una Grilla.
Asignar

autores.Rows(0).BeginEdit()
autores.Rows(0)("au_lname") = "Negro"
autores.Rows(0).EndEdit()
http://www.mediacenter.vb-mundo.com Motorizado por Joomla! Generado: 20 January, 2011, 00:33
VB-MUNDO MEDIA CENTER

'hasta aquí modifique localmente


'Update manda los cambios a la base

da1.Update(ds, "authors")

Esta es una simple muestra del potencial de ADO.NET e incorpora la filosofia de trabajar desconectados de la BD lo que
evita errores y sobrecarga en el motor de BD, imaginen 100.000 usuarios en una página web accediendo
concurrentemente a la misma Tabla.. Imposible hacer si no se desconectan automáticamente.

ADO.NET es muchísimo mas de lo que acabo de mostrar.. de hecho.. dudo de que haya mostrado el 1 % de su
estructura, Pero nos da un pequeño acercamiento a su estructura y sintaxis.

Nombre
Pablo Gustavo Tilotta
Ubicación
Buenos Aires - Argentina

Desarrollador con mas de 20 años de trayectoria. Analista de Sistemas conocedor de multiples lenguajes y tecnologias.
Administrador UNIX desde hace mas de 10 años y Webmaster Profesional desde hace 5 años con mas de 10 sitios
webs en su haber.

Si quieres conocer más sobre Chiaravel haz clic aquí


Si quieres acceder a nuestros foros haz clic aquí

http://www.mediacenter.vb-mundo.com Motorizado por Joomla! Generado: 20 January, 2011, 00:33

S-ar putea să vă placă și