Sei sulla pagina 1di 16

2

FUNDAMENTOS DE ADO.NET
ADO .NET es una tecnologa de acceso a datos que se basa en los objetos ADO (Objetos de Datos ActiveX) anteriores. Es una manera nueva de acceder a los datos construida sobre ADO. ADO .NET puede coexistir con ADO. Aunque usted no conozca ADO. ADO .NET utiliza un modelo de acceso pensado para entornos desconectados. Esto quiere decir que la aplicacin se conecta al origen de datos, hace lo que tiene que hacer, por ejemplo seleccionar registros, los carga en memoria y se desconecta del origen de datos. En resumen ADO.net ? ADO.NET Provee: un conjunto de clases para trabajar con datos

ADO.NET es: Una evolucin ms flexible de ADO y ADO.net 1 Un sistema diseado para entornos desconectados ADO.NET provee: Un modelo de programacin con soporte de XML Un conjunto de clases, interfaces, estructuras, y numeraciones que manejan el acceso a datos dentro del .NET Framework ADO.NET es: Una tecnologa de acceso a datos que se basa en los objetos ADO (Objetos de Datos ActiveX) anteriores ADO.NET Proporciona: Un conjunto variado de componentes Utiliza un modelo de acceso pensado para entornos desconectados ADO.NET Utiliza: XML como el formato para transmitir datos desde y hacia su base de datos y su aplicacin.

Librerias basicas para el manejo de datos desde VisualBasic 2010 System.Data System.Common System.SqlClient System.OleDB System.ODBC System.OrcaleClient

SYSTEM.DATA DATAT ABLE DATASET PROVEEDOR DE ACCESO A DATOS CONNECTION COMMAND DATAADAPTER DATAREADER DATAVIEW

Qu capas o qu partes hay dentro de ADO.NET? Dentro de ADO.NET tenemos dos partes importantes. La primera de ellas es la que corresponde con el nombre de espacio System.Data y que constituye los objetos y clases globales de ADO.NET. Prof. Cayo Huachaca, Luis Webmaster

La otra parte es la que corresponde con los objetos que permiten el acceso a datos a una determinada fuente de datos desde ADO.NET y que utilizan as mismo, las clases del nombre de espacio System.Data. Esta ltima parte, queda constituida por las clases y objetos de los diferentes proveedores de acceso a datos. 4 Para resumir de alguna forma lo que estamos comentando, diremos que el trabajo de conexin con la base de datos, la ejecucin de una instruccin SQL determinada, una vista, etc., la realiza el proveedor de acceso a datos. Recuperar esos datos para tratarlos, manipularlos o volcarlos a un determinado control o dispositivo, es accin de la capa superior que corresponde con el nombre de espacio System.Data.

SYSTEM.DATA: Esta es la libreria base de Ado.Net, esta libreria esta compuesta con 2 clases fundamentales: Data Table DataSet ARQUITECTURA DE ADO.NET ADO.NET consiste en dos partes primarias: Estas clases proporcionan el acceso a una fuente de datos, como Microsoft SQL Server y Oracle. Cada fuente de datos tiene su propio conjunto de objetos del proveedor, pero cada uno tienen un conjunto comn de clases de utilidad:

Connection: Proporciona una conexin usada para comunicarse con la fuente de datos. Command: Usado para realizar alguna accin en la fuente de datos, como lectura, actualizacin, o borrado de datos relacionales. Parameter: Describe un simple parmetro para un command. Un ejemplo comn es un parmetro para ser usado en un procedimiento almacenado. DataAdapter: Puente utilizado para transferir data entre una fuente de datos y un objeto DataSet. DataReader: Es una clase usada para procesar eficientemente una lista grande de resultados, un registro a la vez. DATASETS Los objetos DataSets, un grupo de clases que describen una simple base de datos relacional en memoria, fueron la estrella del show en el lanzamiento inicial (1.0) del Microsoft .NET Framework. Las clases forman una jerarqua de contencin: Un objeto DataSet representa un esquema (o una base de datos entera o un subconjunto de una). Puede contener las tablas y las relaciones entre esas tablas. Un objeto DataTable representa una sola tabla en la base de datos. Tiene un nombre, filas, y columnas. Un objeto DataView se sienta sobre un DataTable y ordena los datos (como una clusula order by de SQL) y, si se activa un filtro, filtra los registros (como una clusula where del SQL). Para facilitar estas

operaciones se usa un ndice en memoria. Todas las DataTables tienen un filtro por defecto, mientras que pueden ser definidos cualquier nmero de DataViews adicionales, reduciendo la interaccin con la base de datos subyacente y mejorando as el desempeo. Un DataColumn representa una columna de la tabla, incluyendo su nombre y tipo. Un objeto DataRow representa una sola fila en la tabla, y permite leer y actualizar los valores en esa fila, as como la recuperacin de cualquier fila que est relacionada con ella a travs de una relacin de clave primaria - clave extranjera. Un DataRowView representa una sola fila de un DataView, la diferencia entre un DataRow y el DataRowView es importante cuando se est interactuando sobre un resultset. Un DataRelation es una relacin entre las tablas, tales como una relacin de clave primaria - clave ajena. Esto es til para permitir la funcionalidad del DataRow de recuperar filas relacionadas. Un Constraint describe una propiedad de la base de datos que se debe cumplir, como que los valores en una columna de clave primaria deben ser nicos. A medida que los datos son modificados cualquier violacin que se presente causar excepciones. Un DataSet es llenado desde una base de datos por un DataAdapter cuyas propiedades Connection y Command que han sido iniciados. Sin embargo, un DataSet puede guardar su contenido a XML (opcionalmente con un esquema XSD), o llenarse a s mismo desde un XML, haciendo esto excepcionalmente til para los servicios web, computacin distribuida, y aplicaciones ocasionalmente conectadas.

ARQUITECURA DE ADO.NET

Prof. Cayo Huachaca, Luis Webmaster

DATATABLE
Es el objeto central de la biblioteca ADO.NET El esquema esta definido por DataColumnCollection. Mantiene la integridad de los datos por medio de Constraints Por medio de sus eventos podemos controlar los diferentes estados de los registros. Desconoce su origen de datos, por lo que funciona como una entidad independiente

ESQUEMA BASICO DEL DATA TABLE

ROW ROW ROWS ROW ROW

COLUMN

COLUMN

COLUMN

COLUMN

COLUMNS

Algunos metodos del datatable: .NewRow Devuelve un objeto DataRow vacio con el esquema del DataTable

.ReadXMLSchema Establece el Esquema del DataTable en base al contenido de un archivo XML .ReadXML .Rows Carga el contenido del DataTable en base a un archivo XML o Objetos Stream, Objets, Coleccin de Rows contenidos dentro del DataTable

.Select Mtodo del cual podemos por medio de expresiones realizar consultas sobre los datarows cargados. .WriteXML Escribe un archivo .xml con el contenido del DataTable

.WriteXMLSchemaEscribe en un archivo .xml con el esquema utilizado en el DataTable .Columns .Add .Remove Coleccin de objetos DataColumn Insertamos un Objeto DataColumn o ben indicamos el nombre y el tipo Eliminamos un objeto DataColumn del DataTable Carga de datarows en base a un origen especificado (DataReader,) Combina los rows entre mltiples DataTables 7

.Load .Merge

Prof. Cayo Huachaca, Luis Webmaster

Ejemplo 01: Creaacion de un datatable basico con 4 columnas y una fila.


Public Class Form1 Dim mitabla As DataTable Dim mifila As DataRow Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load mitabla = New DataTable mitabla.Columns.Add(Codigo) mitabla.Columns.Add(Apellidos) mitabla.Columns.Add(Nombres) mitabla.Columns.Add(DNI) mifila = mitabla.NewRow() mifila(0) = 001 mifila(1) = Gonzales Medina mifila(2) = Luis mifila(3) = 43432616 mitabla.Rows.Add(mifila) Me.DataGridView1.DataSource = mitabla End Sub End Class

Entendiendo del codigo anterior:


Declaro dos variables de tipo datatable y otra datarow


Dim mitabla As DataTable Dim mifila As DataRow

Ahora programo en el evento load del formulario. Este codigo se ejecutara al cargar el formulario. Luego instaciamos la clase datatable y creamos las columnas necesarias para su ejecucion.

mitabla = New DataTable mitabla.Columns.Add(Codigo) mitabla.Columns.Add(Apellidos) mitabla.Columns.Add(Nombres) mitabla.Columns.Add(DNI)

Ahora creamos un datarow, pero este datarow debe ser un nuevo datarow de mitabla.
mifila = mitabla.NewRow()

Asignamos los valores respectivos a mi datarow mifila, pero considerando el numero de campos de mitabla. Ademas cabe recalcar que la coleccion de datarow comienza en 0.
mifila(0) mifila(1) mifila(2) mifila(3) = = = = 001 Gonzales Medina Luis 43432616

Ahora aadimos el datarow mifila al datatable llamado mitabla.


mitabla.Rows.Add(mifila)

Para finalizar enlazamos el datagrid utiliando su propiedad datasource con el objeto mitabla Ejemplo 2 Para realizar este ejemplo primero tiene que disear la siguiente interfaz: - 1 Datagrid - 4 Textbox - 4 Labels - 1 GroupBox - 1 Button

Prof. Cayo Huachaca, Luis Webmaster

Ahora ingresamos el siguiente codigo:


Public Class Form1 Dim mitabla As DataTable Dim mifila As DataRow Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load creaTabla() Me.DataGridView1.DataSource = mitabla End Sub Private Sub creaFila(ByVal cod As String, ByVal ape As String, ByVal nom As String, ByVal dni As String) mifila = mitabla.NewRow() mifila(0) = cod mifila(1) = ape mifila(2) = nom mifila(3) = dni mitabla.Rows.Add(mifila) End Sub Private Sub creaTabla() mitabla = New DataTable mitabla.Columns.Add(Codigo) mitabla.Columns.Add(Apellidos) mitabla.Columns.Add(Nombres) mitabla.Columns.Add(DNI) End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim cod As String = Me.TextBox1.Text Dim ape As String = Me.TextBox2.Text Dim nom As String = Me.TextBox3.Text Dim dni As String = Me.TextBox4.Text creaFila(cod, ape, nom, dni) End Sub End Class

10

Entendiendo el codigo anterior: Mantenemos nuestras variables mitabla y mifila, en el evento load del formulario, llamamos al procedimiento crear tabla y ademas vinculamos el datagrid a traves de su propiedad datasource al objeto mitabla
creaTabla() Me.DataGridView1.DataSource = mitabla

Ahora definimos el procedimiento creaTabla(). Este procedimiento es el mismo que instancia el objeto mitabla y luego se agregan los campos a mitabla.
Private Sub creaTabla() mitabla = New DataTable mitabla.Columns.Add(Codigo) mitabla.Columns.Add(Apellidos) mitabla.Columns.Add(Nombres) mitabla.Columns.Add(DNI) End Sub

Ahora programamos el boton1 y en su evento Click. Aqui se declaran variables que almacenaran los datos insertados en los Textbox. Luego esas variables se envian como parametros requeridos al procedimiento creaFila
Dim cod As String = Me.TextBox1.Text Dim ape As String = Me.TextBox2.Text Dim nom As String = Me.TextBox3.Text Dim dni As String = Me.TextBox4.Text creaFila(cod, ape, nom, dni)

Por ultimo creamos el procedimiento creaFila() y sus parametros con un tipo de dato especifico. Private Sub creaFila(ByVal cod As String, ByVal ape As String, ByVal nom As String, ByVal dni As String) Y dentro de este procedimiento la variable mifila es asociado a un newrow de mitabla. Y por ultimo el valor de cada columna del row es asociado a un parametro especifico. mifila(0) mifila(1) mifila(2) mifila(3) = = = = cod ape nom dni

Por ultimo agregmos mifila al objeto mitabla mitabla.Rows.Add(mifila)

11

Prof. Cayo Huachaca, Luis Webmaster

12

Public Class Form1 Dim mitabla As DataTable Dim mifila As DataRow Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load creaTabla() Me.DataGridView1.DataSource = mitabla End Sub Private Sub creaFila(ByVal ape As String, ByVal nom As String, ByVal dni As Integer) mifila = mitabla.NewRow() mifila(1) = ape mifila(2) = nom mifila(3) = dni mitabla.Rows.Add(mifila) End Sub Private Sub creaTabla() mitabla = New DataTable Dim colcod As New DataColumn Dim colape As New DataColumn Dim colnom As New DataColumn Dim coldni As New DataColumn colcod.ColumnName = "ID" colcod.DataType = System.Type.GetType("System.Int32") colcod.AutoIncrement = True colcod.AutoIncrementSeed = 0 colcod.AutoIncrementStep = 1 colape.ColumnName = "Apellidos" colape.DataType = System.Type.GetType("System.String") colnom.ColumnName = "Nombres" colnom.DataType = System.Type.GetType("System.String") coldni.ColumnName = "DNI" coldni.DataType = System.Type.GetType("System.Int32") mitabla.Columns.Add(colcod) mitabla.Columns.Add(colape) mitabla.Columns.Add(colnom) mitabla.Columns.Add(coldni) End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim ape As String = Me.TextBox2.Text Dim nom As String = Me.TextBox3.Text Dim dni As String = CInt(Me.TextBox4.Text) creaFila(ape, nom, dni) End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click mitabla.Rows.RemoveAt(Me.DataGridView1.CurrentCell.RowIndex) End Sub End Class

Sistema de Administracion del DataTable Para realizar este ejemplo primero tiene que disear la siguiente interfaz utilizando los siguientes controles: - 1 Datagrid - 4 Textbox - 5 Labels - 1 GroupBox - 5 Button

Ahora ingresamos el siguiente codigo.

Public Class Form1 Dim mitabla As DataTable Dim mifila As DataRow Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load mitabla = New DataTable() mitabla.Columns.Add(ID) mitabla.Columns.Add(Apellidos) mitabla.Columns.Add(Nombres) mitabla.Columns.Add(DNI) Me.DataGridView1.DataSource = mitabla End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click mifila = mitabla.NewRow mifila(0) = Me.TextBox1.Text mifila(1) = Me.TextBox2.Text mifila(2) = Me.TextBox3.Text mifila(3) = Me.TextBox4.Text mitabla.Rows.Add(mifila) End Sub

13

Prof. Cayo Huachaca, Luis Webmaster

14

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim elimina As Byte elimina = MsgBox(Desea Eliminar esta fila, MsgBoxStyle.YesNo + MsgBoxStyle.Critical) If elimina = 6 Then mitabla.Rows.RemoveAt(Me.DataGridView1.CurrentRow.Index) ElseIf elimina = 7 Then MsgBox(Accion Cancelada, MsgBoxStyle.OkOnly + MsgBoxStyle.Exclamation) End If End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim buscafila As DataRow Dim existe As Boolean Dim codigo As String Dim indice As Integer = 0 codigo = InputBox(Ingrese el codigo que desea buscar, Busqueda) For Each buscafila In mitabla.Rows If buscafila(0) = codigo Then existe = True Exit For End If indice += 1 Next If existe = True Then Me.DataGridView1.CurrentCell = Me.DataGridView1.Rows(indice).Cells(0) Else MsgBox(No existe, MsgBoxStyle.Critical) End If End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click Dim fin As Integer = Me.DataGridView1.Rows.Count - 1 Dim filaactual As Integer filaactual = Me.DataGridView1.CurrentRow.Index If filaactual < fin Then Me.DataGridView1.CurrentCell = Me.DataGridView1.Rows(filaactual + 1).Cells.Item(0) End If End Sub Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click Dim inicio As Integer = 0 Dim filaactual As Integer filaactual = Me.DataGridView1.CurrentRow.Index If filaactual > inicio Then Me.DataGridView1.CurrentCell = Me.DataGridView1.Rows(filaactual - 1).Cells.Item(0) End If End Sub Private Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e As System.Windows. Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick Me.TextBox1.Text = Me.DataGridView1.CurrentRow.Cells(0).Value Me.TextBox2.Text = Me.DataGridView1.CurrentRow.Cells(1).Value Me.TextBox3.Text = Me.DataGridView1.CurrentRow.Cells(2).Value Me.TextBox4.Text = Me.DataGridView1.CurrentRow.Cells(3).Value End Sub End Class

Entendiendo el codigo anterior: creamos nuestras variables mitabla y mifila.


Dim mitabla As DataTable Dim mifila As DataRow

En el evento load del formulario, creamos la tabla mitabla con sus columnas respectivas y la vinculamos al datagrid.
mitabla = New DataTable() mitabla.Columns.Add(ID) mitabla.Columns.Add(Apellidos) mitabla.Columns.Add(Nombres) mitabla.Columns.Add(DNI) Me.DataGridView1.DataSource = mitabla

Ahora programamos el boton1 y en su evento Click. Aqui creamos una fila utilizando la variable mifila, luego mifila sera un newrow de mi tabla. Luego insertamos los datos en los campos de la fila utilizando a los textbox.
mifila = mitabla.NewRow mifila(0) = Me.TextBox1.Text mifila(1) = Me.TextBox2.Text mifila(2) = Me.TextBox3.Text mifila(3) = Me.TextBox4.Text mitabla.Rows.Add(mifila)

Programamos el boton3 en el evento clic. Este boton elimina las filas de la tabla mitabla. Antes de eliminar nos pregunta si deseamos eliminar. El valor de la respuesta es almacenada en una variable. Si la respuesta es si su valor sera 6 y si la respuesta es no el valor sera 7. En funcion a esa respuesta nosoros eliminaremos una fila de mitabla tomando como elemento al elemento actual del DataGrid.
Dim elimina As Byte elimina = MsgBox(Desea Eliminar esta fila, MsgBoxStyle.YesNo + MsgBoxStyle.Critical) If elimina = 6 Then mitabla.Rows.RemoveAt(Me.DataGridView1.CurrentRow.Index) ElseIf elimina = 7 Then MsgBox(Accion Cancelada, MsgBoxStyle.OkOnly + MsgBoxStyle.Exclamation) End If

Ahora programamos el boton4. Este boton nos sirve para realizar busquedas. Utiliza 4 varialbes: La variable buscafila es un datarow osea es una fila. La variable existe es un boleano osea pueder true o false. La varible codigo es lo que vamos a buscar y la variable indice es un entero que nos ayudara a capturar el indice que corresponda en caso de encontrar lo buscado.
Dim Dim Dim Dim buscafila As DataRow existe As Boolean codigo As String indice As Integer = 0

15

Ahora vamos a recoger lo que el usuario desea buscar y lo almacenamos en la variable codigo, ya que nuestra busqueda sera por codigo. Y para solicitar al usuario el valor a buscar utilizaremso un InputBox
codigo = InputBox(Ingrese el codigo que desea buscar, Busqueda)

Prof. Cayo Huachaca, Luis Webmaster

Ahora utilizaremos un bucle especial para buscar en las filas de la tabla mitabla, y cada vez accion que realiza el bucle comparamos el campo 0 de la fila con lo que se esta buscado y si la comparacion es correcta entonces establecemos el valor de existe a true y finalizamos el bucle. Pero en cada repeticion iremos incrementando en 1 el valor del indice.
For Each buscafila In mitabla.Rows If buscafila(0) = codigo Then existe = True Exit For End If indice += 1 Next

16

Ahora evaluamos el valor de existe, si existe es true entonces movemos la seleccion del datagrid a la fila encontrada y para ello utilizamos la variable indice. Y si la variable existe es false solo le diremos que el valor buscado no existe.
If existe = True Then Me.DataGridView1.CurrentCell = Me.DataGridView1.Rows(indice).Cells(0) Else MsgBox(No existe, MsgBoxStyle.Critical) End If

El boton 4 nos servira para desplazarnos de una fila del datagrid a otra, osea a la fila que sigue. Para ello necesitamos 2 variables, una de ellas me determina la posicion actual y la otra hasta donde puedo llegar. Y con una condicion determino que se mueva una fila adelante o solo se quede ahi de no haber mas filas.
Dim fin As Integer = Me.DataGridView1.Rows.Count - 1 Dim filaactual As Integer filaactual = Me.DataGridView1.CurrentRow.Index If filaactual < fin Then Me.DataGridView1.CurrentCell = Me.DataGridView1.Rows(filaactual + 1).Cells.Item(0) End If

El boton 5 me permite regresar a una fila hacia atrar a partir de la fila actual, para ello necesitamos 2 variables, una ellas me guarda la poscion actual y la otra establece el limite inferior. Utilizamos una condicion para determinar si aun no se ha llegado al limite inferior de ser asi no retrocedera mas.
Dim inicio As Integer = 0 Dim filaactual As Integer filaactual = Me.DataGridView1.CurrentRow.Index If filaactual > inicio Then Me.DataGridView1.CurrentCell = Me.DataGridView1.Rows(filaactual - 1).Cells.Item(0) End If

Ahora vincularemos las el valor de las celdas con cada textbox, esta vinculacion se hara cada vez que se haga un clic en cualquier celda del datagrid.
Me.TextBox1.Text = Me.DataGridView1.CurrentRow.Cells(0).Value Me.TextBox2.Text = Me.DataGridView1.CurrentRow.Cells(1).Value Me.TextBox3.Text = Me.DataGridView1.CurrentRow.Cells(2).Value Me.TextBox4.Text = Me.DataGridView1.CurrentRow.Cells(3).Value

Potrebbero piacerti anche