Isaac Gutierrez

Isaac es un experto arquitecto en nuevas tecnologías y coordinador de grandes proyectos tecnológicos.

Ver todos los tutoriales del autor

Fecha de publicación del tutorial: 2003-06-22

Tutorial visitado 35.966 veces Descargar en PDF

TUTORIAL DE ADO.NET

 

INTRODUCCIÓN

 ADO.NET es una evolución del modelo de datos ADO, de hecho utiliza algunos objetos ADO como Connection y Command, pero también agrega algunos objetos nuevos como DataSet, DataReader y DataAdapter.

 Una característica importante de ADO.NET es el objeto DataSet que funciona de forma independiente. Está basado en XML y es un objeto que está desconectado y no tiene conciencia de cual es el origen y el destino de los datos. Es el objeto DataAdapter el que se conecta a la base de datos para llenar el objeto DataSet. Por lo tanto el objeto DataAdapter es la interfaz de conexión con los orígenes  y destino de los datos, esto hace que ADO.NET sea mucho más consistente y que tenga una mayor eficacia.

 Para trabajar con conexiones de bases de datos podemos escoger entre un proveedor de datos de SQL Server (System.Data.SqlClient) y un proveedor de datos OLE DB (System.Data.Oledb).

 Existen cinco objetos básicos en ADO.NET:

  • Connection: Conectar con la base de datos y administrar transacciones.
  • Command: Para ejecutar comandos SQL.
  • DataReader: Sirve para leer una secuencia de registros de datos sólo hacia delante.
  • DataSet: Es similiar al Recordset de ADO, pero más eficaz ya que representa a una memoria caché de datos, con estructuras análogas a las de una base de datos y siempre está desconectado.
  •  DataAdapter: Sirve para insertar datos en un objeto DataSet y reconciliar datos de la base de datos desde un objeto DataSet.

 Creo mejor para seguir con el tutorial hacer algún ejemplo y comentarle, pienso que es la forma más rápida de empezar a trabajar con esta tecnología. Las operaciones básicas cuando se trabaja con bases de datos son listados, actualizaciones, inserciones y borrados de datos. Si lo que se quiere hacer es mostrar los resultados de una base de datos como una secuencia de datos de sólo lectura y sólo hacia delante, se puede ejecutar un comando y recuperar los resultados mediante el objeto DataReader. Pero si queremos realizar operaciones como enlazar datos, recorrer datos o incluso la configuración remota de los resultados de una consulta lo mejor es utilizar un objeto DataSet.

  

Llenar un objeto DataSet

  

Lo primero que tenemos que hacer es crear el objeto sqlDataAdapter .

 

Dim myConnection as SqlConnection

Dim mySqlDataAdapter as SqlDataAdapter

 

myConnection = new SqlConnection("server=MiServidor;Trusted_Connection=yes;database=nombrebbdd")

      mySqlDataAdapter = new SqlDataAdapter("select * from mitabla", myConnection)

 

También se puede crear a través de un comando.

Dim miComando as SqlCommand = New SqlCommand (“select * from mitabla”, myConnection)

 

Dim miSqlDataAdapter as SqlDataAdapter = new SqlDataAdapter (miComando)

 

El objeto SqlDataAdapter tiene dos métodos Fill y Update. El método Fill llena un objeto DataSet y el método Update recoge los cambios realizados en un objeto DataSet y los hace efectivos en el destino.

Cuando se haya establecido el objeto SqlDataAdapter, se le podrá pasar un objeto DataSet para llenarlo:

Dim myDataSet as DataSet = new DataSet()
mySqlDataAdapter.Fill(myDataSet,"MiColumna")
 

Como los datos se almacenan en una colección de filas de la tabla, es posible utilizar fácilmente una instrucción foreach para recorrer las filas:

      Dim myDataRow as DataRow
      For Each myDataRow In myDataSet.Tables("MiTabla").Rows
        Console.WriteLine(myDataRow("MiColumnaId").ToString())
      Next

 

El código completo es el siguiente:

Imports System
Imports System.Data
Imports System.Data.SqlClient
 

namespace LlenarDataset
 

public class gettingdata
  public shared sub Main()
    Dim mygettingdata as gettingdata
    mygettingdata = new gettingdata()
    mygettingdata.Run()
  end sub
 

  public sub Run()
    Dim myConnection as SqlConnection
    Dim mySqlDataAdapter as SqlDataAdapter
 

    try
      Dim myDataSet as DataSet = new DataSet()
 

      myConnection = new SqlConnection("server=MiServidor;Trusted_Connection=yes;database=nombrebbdd")
      mySqlDataAdapter = new SqlDataAdapter("select * from mitabla", myConnection)
 

      mySqlDataAdapter.Fill(myDataSet,"MiColumna")
 

      Dim myDataRow as DataRow
      For Each myDataRow In myDataSet.Tables("MiTabla").Rows
        Console.WriteLine(myDataRow("MiColumnaId").ToString())
      Next
    catch e as Exception
      Console.WriteLine(e.ToString())
    end try
  end sub
end class
 

end namespace

 

 

Convertir una aplicación ADO en una aplicación ADO.NET

Tenemos que tener en cuenta que un objeto Recordset de ADO sólo contiene datos para una tabla, a diferencia de un objeto DataSet de ADO.NET que puede contener varias tablas y es bastante más flexible.

La secuencia básica de una aplicación que utilice ADO es una conexión a la base de datos, se ejecuta una consulta SQL que devuelve un objeto Recordset de ADO y si es una consulta pues se recorre este objeto para mostrar los datos recuperados al usuario.

‘Conexión con la base de datos

cn.Open(“server=nombre_servidor;Trusted_Connection=yes;database=mibaseDatos;provider=sqloledb”)

‘Abrimos el RecordSet

Set rst = New ADODB.Recordset

Rst.Open “select * from MiTabla”, cn, adOpenKeyset, adLockPessimistic

 

‘Nos situamos en el primer registro para rocorrer los datos

rst.MoveFirst

 

Los pasos a seguir en .NET son muy parecidos, establecemos una conexión con la base de datos mediante un objeto SqlConnection, se utiliza el objeto Reader para recorrer los datos devueltos cuando se ejecute la consulta y este objeto DataReader de sólo lectura y sólo hacia delante ofrece mejor rendimiento el de ADO. Al igual que se llenaba antes el objeto RecordSet aquí se tiene que llenar el objeto DataSet mediante SqlDataAdapter y el método Fill de este último objeto.

 

‘Establecemos la conexión
Dim myConnection as SqlConnection = new SqlConnection("server=MiServidor;Trusted_Connection=yes;database=nombrebbdd")
‘Utilizamos el objeto SqlDataAdapter

Dim mySqlDataAdapter as SqlDataAdapter = new SqlDataAdapter("select * from mitabla", myConnection)
 

‘Llenamos el DataSet
Dim myDataSet as DataSet = new DataSet()
mySqlDataAdapter.Fill(myDataSet,"MiColumna")

 

En una aplicación ADO si ejecutamos una consulta existirá alguna función que se desplaza por el objeto Recordset para obtener datos de cada registro y cada combinación de campos. Se utilizan los métodos MoveFirst, MoveLast, MovePrevious y MoveNext del objeto Recordset.

Para recorrer un objeto DataSet en ADO.NET se asigna a un objeto DataView y se recorre el objeto DataView resultante para extraer los datos. Utilizando el objeto DataView es posible convertir cualquier tabla de un objeto DataSet en un objeto que funcione de forma similar al antiguo objeto Recordset de ADO.

 

Dim myDataView as DataView = new DataView (myDataSet.Tables(“MiColumna”))

 

Y  se recorrería con un bucle como se hace con el antiguo Recordset.

Dim cont as integer

For cont = 0 to myDataView.Count  -1

            Consolo.Write(MyDataView(cont)(“campo”))

            ………….

next

 

Sobre el Autor ..

A continuación puedes evaluarlo:

Regístrate para evaluarlo

Por favor, vota +1 o compártelo si te pareció interesante

Share |
Anímate y coméntanos lo que pienses sobre este TUTORIAL:

Fecha publicación: 2009-06-25-05:58:38

Autor:

[Edgar] Muchisimas gracias amigos, yo no entendía el concepto de cada objeto de ADO.net y solo lo aplicaba pero a ciegas porque no sabia para que servía, solo miraba que funcionaba. Muchas gracias por este aporte, me ha ayudado bastante.

Fecha publicación: 2007-01-12-12:46:58

Autor:

[Carlos Guevara Lopez] Solo puedo expresar mis palabras de agradecimiento por tan noble esfuerzo !!! Bienvenidos aquellos que comparten el conocimiento !!!

Fecha publicación: 2006-10-28-01:29:36

Autor:

[raul] El nombre correcto no seria tutorial, ya que es cortisimo.

Fecha publicación: 2006-07-31-05:10:23

Autor:

[Federico Ledezma San] Es muy bueno el tutorial, pero en las empresas pequeñas casi no utilizamos sqlserver y se utiliza mas acces por lo que seria excelente si incluyeran para esta base de datos y para automatizar con word o excel Saludos Fico