Agenda telefónica 2
en
Visual Basic NET
En mi
anterior ejercicio "Agenda telefónica 1 en VBasic .NET" se proponía una manera
muy sencilla (la que más en el entorno actual de Visual Basic .NET) de conectar
con una base de datos de Access, usando el Asistente para Formularios de Datos
del propio IDE de Visual Studio. Esta manera de trabajar tiene ventajas evidentes
para el principiante:
- el asistente
realiza la mayor parte del trabajo, de manera que, con pocos conocimientos y
en poco tiempo, se tiene una aplicación que funciona.
- el código creado
automáticamente es bastante complejo, con buena protección de errores, y suele
funcionar bien casi desde el principio.
- la aplicación
realizada de esta manera entra de lleno en ADO .NET (ActiveX Data
Objects .NET), que es la tecnología de acceso a datos más avanzada de la
plataforma .NET, proporcionando pleno acceso desconectado a los datos.
Pero, junto a esas ventajas,
aparecen algunos inconvenientes, de los que, al menos 3, son para tener en cuenta:
- el código creado
automáticamente reside en gran parte en la sección
#Region " Código generado por el Diseñador de Windows Forms "
lo que lo hace menos manipulable por el programador.
- el código creado
automáticamente, como ya se ha dicho antes, es bastante complejo, y puede darse
el caso de que el usuario principiante ponga a punto una aplicación de este
tipo con rapidez y, sin embargo, no comprenda grandes fragmentos del código
de su propio programa (como me pasó a mí mismo ;-).
- el código creado
automáticamente recurre a un mecanismo de la plataforma .NET llamado DataBinding,
que consiste en crear enlaces entre los objetos contenedores de los datos y
los controles del formulario, lo que permite que las operaciones de navegación
y edición de registros se automaticen en grado elevado. Este mecanismo de enlace
automático de datos a controles usa numerosos elementos del conjunto de tipos
de .NET Framework: clases, colecciones, enumeraciones... Todo ello pasa desapercibido
al realizar este tipo de aplicaciones con el Asistente para Formularios de
Datos.
De todo lo anterior
nace la idea del ejercicio actual, esta "Agenda telefónica 2", con 2 premisas
fundamentales:
- debe usar un
mecanismo similar al de la primera Agenda telefónica, realizando otro ejercicio
en el que sea el propio usuario el que construya el código "a mano", recurriendo
también al empleo de DataBinding.
- debe seguir
siendo un ejercicio proyectado para principiantes, por lo que el código debe
ser sencillo en todo lo que se pueda y debe estar explicado al máximo en cualquiera
de sus pasos.
Introducción simple
a ADO .NET y DataBinding
Acceso desconectado
a datos: En la arquitectura tradicional de tipo cliente / servidor, cada
cliente se conectaba a la base de datos, manteniendo la conexión el tiempo necesario
para realizar operaciones directamente contra el servidor de base de datos al que
está conectado. Obligaba a mantener conexiones de base de datos para todos y cada
uno de los usuarios.
Al crecer el tamaño de las bases de datos y el número de clientes (usuarios) potenciales,
sobre todo en relación con el fenómeno de Internet, se vio la necesidad de establecer
conexiones lo más breves posibles, simplemente para las operaciones inicial (lectura
o recuperación de datos) y final (escritura o actualización de datos)
sobre el origen de los datos (la base de datos) y trabajar el resto del tiempo sobre
una copia desconectada local del origen de los datos (DataSet).
En versiones anteriores de Visual Basic ya existía ADO (ActiveX Data Objects)
que permite acceder a todo tipo de bases de datos desde Visual Basic y trabajar
en modo desconectado. Visual Basic .NET puede usar ADO, pero ADO .NET
es el método preferido por Visual Studio .NET para conectar a bases de datos.
ADO .NET usa clases específicas para efectuar operaciones en bases de datos.
Una de las diferencias con respecto a ADO es el uso de comandos específicos
de conexión con SQL Server: varias de las clases principales de ADO .NET
tienen 2 versiones diferentes, una para conectar a una base de datos SQL Server
y otra para proveedores OLE-DB. Como ejemplo, tenemos SQLCommand y
OLEDBCommand, SQLConnection y OLEDBConnection, etc. ODBC
está desaconsejado, es conveniente usar OLE-DB en su lugar.
DataBinding: es el mecanismo de la plataforma .NET que, en aplicaciones con
interfaz WindowsForms, permite crear enlaces entre los objetos que contienen
los datos y los controles del formulario. Como ejemplo, se puede enlazar la propiedad
Text de un control TextBox con una columna de una tabla del DataSet
(la base de datos desconectada), lo que simplifica enormemente las operaciones de
navegación por los registros de la tabla.
Objetos importantes del DataBinding:
- Binding:
clase que permite crear el enlace, necesita:
- propiedad
del control que muestra los datos
- DataSet
que proporciona la información
- tabla y
columna cuyos datos pasan a la propiedad del control
- DataBinding:
colección de los enlaces a datos que tienen los controles
- BindingContext:
propiedad de la clase Form con información de los enlaces establecidos
entre controles y datos. Devuelve un objeto BindingManagerBase
- BindingManagerBase:
encargado de administrar un conjunto de enlaces de un formulario, obtenidos
desde la propiedad BindingContext del formulario.

Pulsa
aquí para ver el código completo.