Documentos de Académico
Documentos de Profesional
Documentos de Cultura
VB Net BD 2005 01
VB Net BD 2005 01
Net
1.1 Introduccin.
Desde Vb Net 2005 se puede acceder a las siguientes bases de datos, utilizando las clases adecuadas.
Oracle
SQL Server
Access
Las que se puedan acceder a travs de ODBC
Cualquier base de datos que pueda ser accesible desde la clase genrica DataBase.
En ste apartado nos vamos a centrar en Access, pero hay que tener presente que la diferencia en el
acceso a una base de datos solo cambia por la clase de origen que se utiliza en el uso de la misma, ya que los
objetos a utilizar son bsicamente los mismos.
Los cambios en esta versin con respecto a la seis son considerables, hasta el punto que casi
podramos decir que sirve de poco lo que sabamos de la versin anterior. Por lo tanto quizs sea buena idea
hacer como un reset y no pensar en el como lo hacamos antes, pues posiblemente ganemos tiempo.
El primer cambio viene en el nmero de objetos disponibles para el manejo de la base de datos, que son
ms, y conviene comprender el destino de cada uno, para facilitar las cosas.
Otro apartado es que ahora la filosofa pasa por acceder a la base de datos y cerrar la conexin, lo cual
tiene la ventaja de descargar de recursos al servidor, y as este gana en prestaciones y recursos disponibles.
En Vb Net hay que, o se puede contemplar dos escenarios distintos.
Uno en el que el acceso a los datos se hace directamente a la base de datos, otro en el que el acceso se
hace solo al inicio del programa para obtener el subconjunto de la base de datos necesario para el programa
que se est ejecutando en ese momento, para luego al final hacer una actualizacin con los cambios realizados
en la base de datos, este proceso de actualizacin lo gestionan los mtodos que incorpora la clase que
gestiona el acceso a la base de datos.
El acceso a la base de datos se realiza siempre mediante instrucciones SQL, no se dispone de mtodos
de acceso para leer o grabar, como en la versin anterior.
Las relaciones de integridad se definen en la base de datos, y se captura el error en el programa para la
gestin de las mismas.
El enfoque de est documentacin se aparta del uso de los asistentes de Vb Net 2005, por lo que no
haremos uso de los mismos.
OracleClient
SQLClient
OleDb
ODBC
DB
1.3.1 Conexin.
1.3.2 Almacenamiento.
System.Data.OleDb.OleDbDataReader
System.Data.DataTable
System.Data.DataSet
System.Data.DataRow
Como podemos observar el objeto DataReader pertenece al espacio de nombres OleDb mientras que los
dems pertenecen a System.Data.
El objeto DataReader es un objeto gil y que esta especializado en almacenar datos para solo lectura, lo
que le quita la gestin de las actualizaciones y le permite ser ms rpido en los accesos a los datos de la base
de datos.
El objeto DataTable, es lo ms parecido a una tabla de la base de datos, dispone de la posibilidad de
definir clave primaria de uno o varios campos.
El DataTable puede ser la imagen de una tabla de la base de datos, o puede ser el resultado de una
SQL que combine varias tablas en la SQL, o tabla virtual si queremos llamarla as.
Este objeto en el uso del DataSet es usado como parte del DataSet.
El objeto DataSet es lo que hemos dado en llamar antes un subconjunto de la base de datos de nuestra
aplicacin.
Al iniciar el programa se carga con aquellos datos que sean necesarios para el mismo, se cierra la
conexin y luego se realiza la actualizacin de los datos en la base de datos con los cambios que hayan habido
en el programa.
El DataSet no puede formar parte de un DataTable.
El objeto DataRow, lo hemos incorporado como elemento de almacenamiento, aunque hace referencia a
una fila, registro de la base de datos, porque hemos comprobado lo til que llega a ser el uso del mismo, y al fin
y al cabo almacena datos, un registro, pero datos.
1.3.3 Visualizacin.
Los objetos de visualizacin puede ser cualquiera de los que tenemos disponibles en el entorno de
programacin.
Lo importante aqu es como utilizarlos a la hora de visualizar los datos de nuestra fuente de
almacenamiento.
2
1.3.4 Otros.
BindingSource
System.OleDb.OleDbCommandBuilder
System.OleDb.OleDbCommand
BindingSource, este objeto es el que hace de puente entre aquellos objetos que no disponen de la
propiedad DataSource y el objeto fuente de los datos.
CommandBuilder, este genera de forma automtica cdigo SQL para las opciones Insert, Update y
Delete, tanto para el uso normal, como para cuando se utiliza el DataAdapter en el entorno de un DataSet.
Command, sirve para indicar, almacenar y ejecutar cuando proceda, la instruccin SQl, sea almacenada
o incrustada, para un objeto DataReader o DataAdapter.
Tiene dos formatos de utilizacin,
ExecuteNonQuery se ejecuta y no devuelve datos, borrado por ejemplo.
ExecuteReader se ejecuta y devuelve una coleccin de datos que se asignan a un objeto.
2. Conexin.
2.1 Introduccin.
La conexin a la base de datos se realiza a travs de un objeto especfico, lo cual permite que cada tipo
de base de datos posea un objeto especializado en la misma, y se facilite dicha tarea.
Cada base de datos posee un juego distinto de parmetros para su acceso, por lo tanto esto facilita
dicho proceso.
El objeto de conexin en Access es el OleDbConnection.
Adems existe la clase
System.Data.OleDb.OleDbConnectionStringBuilder
Que permite aadir a una coleccin todos los datos necesarios para la configuracin de la conexin, hay
que tener presente que el uso de parmetros no necesarios puede generar error, como por ejemplo el de
contrasea si la base de datos no la tiene.
2.2 OledbConnection.
Este es un ejemplo de cmo puede ser la configuracin del acceso a la base de datos.
Hay dos pasos, la generacin de la cadena de conexin, y la prueba de la disponibilidad de la base de
datos, forzando un open y close de la misma para su control.
En el ejemplo el objeto Conexin es del tipo OleDBConnection, y se supone declarado a nivel de
aplicacin.
Public Conexion As New System.Data.OleDb.OleDbConnection
Public Sub CadenaConexion( _
ByRef CadConex As System.Data.OleDb.OleDbConnectionStringBuilder, _
ByVal Ruta As String)
CadConex.ConnectionString = Ruta
' Aadir el nombre de cada parmetro y el valor que se le asigna.
CadConex.Add("Provider", "Microsoft.Jet.Oledb.4.0")
' Password de la base de datos, si lo tiene.
CadConex.Add("Jet OLEDB:Database Password", "password")
' Informacin para el grupo de trabajo.
CadConex.Add("Jet
OLEDB:System
Database",
"C:\Archivos
programa\Microsoft Office\Office\System.mdw")
Este es necesario
CadConex.Add("Jet OLEDB:Database Locking Mode", 1)
End Sub
de
2.3 OleDbDataAdapter.
Este objeto permite realizar el acceso a la base de datos para el trasiego de informacin en los dos
sentidos, digamos que gestiona los datos entre la base de datos y la aplicacin a partir de los datos facilitados
en la conexin.
Pertenece a System.Data.oleDb.OleDbDataAdapter.
Su definicin es
Dim Adaptador As System.Data.OleDb.OleDbDataAdapter
En el ejemplo que sigue se utiliza la carga de un DataGrid que se enlaza a la tabla que se crea en el
procedimiento.
Como objeto de almacenamiento se utiliza un DataTable.
En el procedimiento se crea una restriccin en la tabla para a posteriori controlar las duplicidades de los
datos en la misma y capturar el error.
Private Sub CargaDataGrid( _
ByVal Conexion As System.Data.OleDb.OleDbConnection, _
ByRef Adaptador As System.Data.OleDb.OleDbDataAdapter, _
ByRef EnlaceTabla As BindingSource, _
ByRef ObjDataGrid As DataGridView)
Dim Cliente As ItemLista = CType(Lista02.SelectedItem, ItemLista)
Dim CadenaSql As String
' Se deshace de los datos anteriores
Tabla = New DataTable
5
Try
' Control y lectura
While Reader.Read
Objeto = New ItemLista(Trim(Reader.Item("RazonSocial").ToString), _
Reader.Item("Tipo").ToString, _
Reader.Item("Codigo").ToString)
Lista.Items.Add(Objeto)
End While
Catch ex As OleDb.OleDbException
MsgBox(ex.Message, MsgBoxStyle.Information, "Leer reader")
End Try
Catch Ex As OleDb.OleDbException
MsgBox(Ex.Message, MsgBoxStyle.Information, "Crear reader")
End Try
Conexion.Close()
End Sub
Toda la informacin referente a ste objeto la podemos encontrar en el siguiente link.
http://msdn2.microsoft.com/es-es/library/system.data.oledb.oledbdataadapter(VS.80).aspx
Como hemos podido comprobar la conexin se configura mediante el objeto OleDbConnection, pero lo
que es la tarea posterior de gestin de los datos podemos efectuarla de dos formas distintas, mediante el uso
del DataAdapter o mediante el formato del uso del DataReader.
Cada uno tiene un escenario distinto.
En toda tabla que se precie, existe una clave principal, de uno o varios campos.
Dicha gestin se puede hacer a dos niveles, DataAdapter o DataTable.
Con el DataAdapter la gestin de la clave principal se puede hacer de la siguiente forma.
' Asignacin del comando al objeto adapter.
AdapAlbCa.SelectCommand = Comando
' LLenar la tabla
Try
' Limpiar la tabla, solo si procede
ObjDataSet.Tables("AlbCab").Rows.Clear() ' limpia la tabla
Catch ex As NullReferenceException
Finally
' Capturar el esquema de la clave principal desde la tabla origen
AdapAlbCa.FillSchema(Tabla, SchemaType.Source)
' LLenar la tabla
AdapAlbCa.Fill(Tabla)
End Try