Вы находитесь на странице: 1из 11

Programadores: Visual Basic .

Net y MySQL (Completo)

Un poco de teoria para inciar:


Open DataBase Connectivity (ODBC) es un estndar de acceso a bases de datos desarrollado
por SQL Access Group en 1992, el objetivo de ODBC es hacer posible el acceder a cualquier
dato desde cualquier aplicacin, sin importar qu sistema de gestin de bases de datos (DBMS)
almacene los datos, ODBC logra esto al insertar una capa intermedia (CLI) denominada nivel de
Interfaz de Cliente SQL, entre la aplicacin y el DBMS, el propsito de esta capa es traducir las
consultas de datos de la aplicacin en comandos que el DBMS entienda. Para que esto funcione
tanto la aplicacin como el DBMS deben ser compatibles con ODBC, esto es que la aplicacin
debe ser capaz de producir comandos ODBC y el DBMS debe ser capaz de responder a ellos
Fuente: http://es.wikipedia.org/wiki/Open_Database_Connectivity
Siendo as, el esquema de la aplicacin sera el siguiente:

Si embargo, y esto es muy importante, este mismo esquema se puede usar de manera local, si
es que estas pensando en disear una aplicacin que no requiera de un servidor; para lograrlo
simplemente haremos que un mismo computador sea cliente y servidor a la vez.

Programas requeridos:
Para llevar a cabo estos tutoriales necesitaremos los siguientes programas:
- Motor de Base de Datos (o servidor) MySQL - Descargalo AQUI
- Controlador (o enlace) ODBC de MySQL - Descargalo AQUI
- GUI Tools MySQL - Descargalo AQUI
- MS Visual Basic Express 2010 - Descargalo AQUI o la version normal de VB.Net
Asegurate de tener instalados estos 3 programas antes de continuar con el tutorial. La
instalacion de los componentes MySQL es muy sencilla.
Lo recomendado seria instalar el Servidor MySQL en el computador Servidor y el Controlador
ODBC en los computarores clientes, para efectos didacticos puedes instalar todo en el mismo
computador.
NOTA IMPORTANTE: Si eres programador de PHP y usas MySQL con PHPMyAdmin NO instales el
Servidor MySQL, solo el Controlador ODBC

Creacin de la Base de Datos


Una vez instalados los componentes de MySQL procederemos a crear nuestra base de datos,
para eso vamos a:
> Inicio
>> Todos los programas
>>> MySQL
>>>> My SQL Administrator.

Iniciamos sesin usando los datos de usuario que debimos crear en la instalacin del MySQL:

Ventana Principal de MySQL Administrator:

Para quienes no tienen experiencia en MySQL, podramos decir que la palabra "Schema" es sinonimo de
"Base de Datos"

Creacin del "Schema"


Primero, damos un nombre al "schema" (que de ahora en adelante seguire llamando Base de Datos)

Pasaremos muy rpido por esto, hacemos clic en la nueva base de datos, luego en "Create Table", le damos un
nombre y creamos los campos, asi:

Con esto finalizamos la creacin de la base de datos, en esta parte podran crear cuantas tablas
y campos necesiten para poner a funcionar sus creaciones en VB.Net.

Configuracin del Origen de Datos


Ahora debemos crear un origen de datos, este origen de datos sera el encargado de comunicar
el computador "Cliente" con el computador "Servidor" que sera donde se almacenen todos los
datos que insertemos o modifiquemos, es decir, nuestra base de datos.

Este origen de datos sera a la vez el punto de conexion que usara nuestro programa en Vb.Net,
dicho mas claro seria asi:
VB.Net ---> Conector MySQL ODBC ---> Servidor MySQL
o
Servidor MySQL ---> Conector MySQL ODBC ---> VB.Net

Crear Origen de Datos

El origen de datos se debe crear en el computador donde se ejecutara nuestro programa de

VB.Net (Cliente)
Sigamos la siguiente ruta (Para Windows 7):
>Inicio
>>Panel de Control
>>>Sistemas y seguridad
>>>>Herramientas Administrativas
>>>>>Origenes de Datos ODBC
Una vez estemos en el Administrador de origenes de datos ODBC, haremos clic en la pestaa
"DNS de Sistema" y luego en el boton "Agregar..."

Windows nos mostrara los conectores ODBC que esten instalados en el computador:

Seleccionamos el Controlador MySQL ODBC Driver y clic en "Finalizar"

Ahora configuraremos el Origen de Datos asi:

Data Source Name: Es el Nombre del Origen de Datos, usando este nombre conectaremos
nuestro programa desarrollado en Vb.Net con el Origen.
TCP/IP Server: Es la direccin IP del servidor, si usan el mismo equipo como Cliente y Servidor
a la vez colocamos "localhost", si se tiene conexin con un servidor colocamos all su IP
User: Es el nombre de usuario que se creo al instalar el servidor de MySQL, por defecto es
"root"
Password: Es la clave que se le asigno al "root" durante la instalacion del servidor MySQL, si
no asignaron una contrasea deben dejar el campo en blanco.
Database: Es el nombre del "Schema" o de la base de datos que previamente creamos en el
servidor. Esta debe elegirse de la lista desplegable.
Para verificar que el controlador se comunica con el servidor hacemos clic en el boton "Test" y
nos mostrara un mensaje indicndonos si hubo xito en la conexin o no.

Creacin de la Clase Conexin


Bueno, por fin, despues de tanto configurar vamos a programar, creamos nuestro nuevo
proyecto en VB.Net (Recuerden que los codigos y ejemplos que ire publicando han sido creados
en la version 2010 de Visual Studio)
Una vez estemos en nuestro nuevo proyecto, agregaremos un modulo asi:
> Menu "Proyecto"
>> Agregar Modulo...

Le pondremos como nombre Conexion.vb y este sera el cdigo que


pondremos all (lo ir explicando por partes):

Declaraciones:
1
2
3
4

Public Reader As Odbc.OdbcDataReader


Public Conec As New Data.Odbc.OdbcConnection
Public comando As New Odbc.OdbcCommand
Dim uid As String, pwd As String

Reader: Este objeto "leera" los datos de una consulta a la base de datos
Conec: Este objeto sera la encargada de crear un conexion con la base de datos
comando: Este objeto ejecutara las peticiones SQL que escribamos
uid: Esta variable la usaremos para almacenar el nombre de usuario del servidor MySQL, que por lo general
es "root"
pwd: Esta variable almacenara el password del servidor MySQL
Funcin Conectar:
?
1 Sub Conectar(ByVal uid As String, ByVal pwd As String)
2
Try
3
If Conec.State = ConnectionState.Closed Then
Conec.ConnectionString = "DSN=factusis2;Uid=" & uid & ";pwd=" & pwd &
4
";"
5
Conec.Open()
6
End If
7
Catch ex As Exception
MsgBox("No es posible conectarse a la base de datos",
8
MsgBoxStyle.Critical,
"Error")
9
End Try
1 End Sub
0
En este procedimiento usaremos una estructura Try...Catch para validar la conexin entre nuestro programa y
la base de datos ODBC, si la conexion se logra se procedera a abrir la misma, de lo contrario se notificara al
usuario que no ha sido posible dicha conexin.
Procedimiento New
?
1 Sub New()
2
3 End Sub
4
5 Sub New(ByVal Usuario As String, ByVal Pass As String)
Conectar(Usuario, Pass)
6
End Sub
7
Primero, creamos la funcin New vaca para que se cree el Constructor, y luego si le damos
la instruccin requerida, en este caso le estamos diciendo que ejecute la funcin Conectar, y le estamos dando
los parmetros que esta requiere: El usuario y la contrasea.
Procedimiento DDL
?
1 Sub DDL(ByVal Peticion As String)
Try
2
If Not Conec.State = ConnectionState.Open Then
3
Conec.Open()
4
End If
Dim Comando As New Odbc.OdbcCommand(Peticion, Conec)
5
Comando.ExecuteNonQuery()
6
Conec.Close()
7
MsgBox("Proceso realizado con exito.")

8
9
Catch ex As Exception
10
Conec.Close()
MsgBox(ex.Message, vbCritical, "Error")
11
End Try
12
End Sub
13
14
Este procedimiento sera el encargado de ejecutar las instrucciones SQL de nuestro programa. Al mismo
tiempo, este procedimiento nos permitir saber y a la vez informar al usuario de la aplicacin, si la orden
ejecutada (guardar, eliminar, actualizar, etc) fue realizada con xito o no. Cuando la orden no puede
ejecutarse, ya sea por errores en la sintaxis, errores en la base de datos o errores de conexion, se mostrara
un mensaje con el error especifico.
Funcin Consulta
?
1
2 Function Consulta(ByVal Peticion As String) As Odbc.OdbcDataReader
Try
3
If Not Conec.State = ConnectionState.Open Then
4
Conec.Open()
5
End If
6
7
Dim Comando As New Odbc.OdbcCommand(Peticion, Conec)
8
Comando.ExecuteNonQuery()
Reader = Comando.ExecuteReader
9
Return Reader
10
Catch ex As Exception
11
Conec.Close()
12
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error")
Return Nothing
13
End
Try
14
15 End Function
16
Esta funcin, como su nombre ya lo dice, sera la encargada de ejecutar los comandos de consulta SQL de
nuestra aplicacin.

Variables Globales
Para que podamos usar la clase Conexion.vb explicada en el tutorial anterior, es necesario
definir unas variables de ambito global, para esto agregaremos otro modulo al proyecto, y
declararemos dentro de este lo siguiente:

1 Public Conec As New Conexion("root", "clave123")


2 Public Peticion As String
3 Public Buscar As Odbc.OdbcDataReader
A travs del objeto Conec crearemos una nueva conexion con el origen de datos a la vez que le
pasamos los parmetros que esta requiere, el usuario del servidor MySQL y su respectiva
contrasea.
La variable Peticion o en muchos otros tutoriales denominada "query" sera la cadena de texto
en donde escribiremos las instrucciones SQL; esta instruccin sera ejecuta con el objeto Conec
y DDL
Y por ultimo el objeto Buscar, se encargara de buscar y almacenar los datos obtenidos en las
consultas.

Operaciones Bsicas con la Base de Datos


Supongamos que tenemos una base de datos ya creada, con un tabla llamada "tabla" y con los siguientes
campos y caracteristicas:
n
- integer
nombre - varchar(45)
direccion - varchar(45)
telefono - varchar(45)

autoincrement

Para facilitar la comprensin y puesta en practica de este tutorial, les recomiendo disear un formulario con
estas caractersticas y usar los nombres sugeridos para los controles:

Los tipos de controles presentados en la imagen son:


TextBox: txBusqueda, txNombre, txDireccion, txTelefono
Button: btGuardar, btActual, btEliminar, btNuevo
ListBox: ltListado
Bien, lo primero sera programar el evento Form_Load, lo que queremos aqu es que cada vez que el
formulario cargue, muestre en el ListBox los nombres de los registros existentes.
En el evento Load del Formulario:
?
1
2 ltListado.Items.Clear()
Try
3
Peticion = "select * from tabla"
4
Buscar = Conec.Consulta(Peticion)
While Buscar.Read
5
ltListado.Items.Add(Buscar.GetValue(1).ToString)
6
End While
7
Catch ex As Exception
8
MsgBox(ex.Message)
9
End Try
10
Analicemos el cdigo linea a linea:
Usamos una estructura Try...Catch para controlar los errores que puedan producirce, luego
asignamos a la variable Buscar el resultado de ejecutar la consulta escrita en la
variable Peticion usando el objeto Conec.
Abrimos un ciclo repetitivo While que tendr tantas interaciones como resultados se consigan
en la consulta, es decir, si la consulta devuelve 10 registros, el ciclo se har 10 veces. Dentro
de este ciclo vamos a ir adicionando los resultados al listbox, pero, aqu notaran algo raro, que

no vemos el nombre del campo que queremos mostrar, y es porque para obtener un valor
especifico de una consulta, usaremos el indice del campo, para nuestro ejemplo seria as:

n=0
nombre = 1
direccion = 2
telefono = 3
Entonces, "Buscar.GetValue(indice).ToString" sera la estructura que usaremos para obtener el valor de un
campo cualquiera en una consulta.
Insertar Datos
El siguiente, seria el cdigo para guardar en la base de datos los valores escritos en los textboxes:
?
1
2 'VALIDAR NOMBRE
Peticion = "select * from tinv where nom='" & txNomBRE.Text & "'"
3
Buscar = Conec.Consulta(Peticion)
4
While Buscar.Read
5
MsgBox ("Ya existe un registro con el nombre" & txNombre.Text)
Exit Sub
6
End
While
7
'INSERTAR DATOS
8
Peticion = "insert into tabla values(null, '" & txNombre.Text & "','" &
9 txDireccion.Text & "','" & txTelefono.Text & "')"
Conec.DDL(Peticion)
1
0
Veamos esto paso a paso; Primero hago una consulta, para evitar guardar 2 veces un registro con un mismo
nombre (para efectos prcticos no se usara el nombre de una persona como Clave de una tabla) Si la
consulta encuentra algn registro con el nombre que intentamos guardar, nos avisara mediante un mesaje y se
interrumpira el procedimiento, de lo contrario, procedemos a insertar los datos en la tabla.
Importante: Los datos deben insertarse en el mismo orden en que se encuentran los campos en la tabla, como
el primer campo de nuestra tabla ejemplo (campo "n") es un AutoIncrement no asignamos un valor como tal,
sino que "nos saltamos" su asignacion usando la palabra "Null", luego, siguiendo el orden de la tabla
insertamos: Nombre, Direccion y Telefono y ejecutamos la instruccion en Conec.DDL(Peticion)
Consulta de Registros
Para realizar consultas usaremos los datos (nombres) que contenga el listbox del ejemplo, es decir, que el
usuario con solo hacer un clic en un nombre, se cargaran los datos correspondientes a ese nombre en los
textboxes; mas adelante usaremos otro mtodo de bsqueda para filtrar los resultados o datos cargados en el
listbox.
Vamos al evento Click del ListBox y:
?
1 Peticion = "select * from tabla where nombre='" & ltListado.Text & "'"
2 Buscar = Conec.Consulta(Peticion)
While Buscar.Read
3
txNombre.Text = Buscar.GetValue(1).ToString
4
txDireccion.Text = Buscar.GetValue(2).ToString
5
txTelefono.Text = Buscar.GetValue(3).ToString
6
End While
7
Actualizacion o Edicion de Registros
Para editar, previamente debemos realizar una consulta. Con esta sencilla instruccin cambiamos los datos del
registro activo por los asignados en los respectivos controles:
?
= "update tabla set direccion='" & txDireccion.Text & "',telefono='" &
1Peticion
txTelefono.Text & "' where nombre='" & txNombre.Text & "'"
2Conec.DDL(Peticion)

Simplemente hacemos una asignacin campo a campo, algo a destacar de esta instruccion es que no estamos
obligados a actualizar o editar todos los campos, sino unicamente los que deseemos.
Eliminar un Registro
Al igual que para editar, es necesario hacer una consulta antes de eliminar un registro, el cdigo seria as:
?
1If (MsgBox("Realmente desea borrar este registro?", vbYesNo + vbQuestion,
"Advertencia") = vbYes) Then
2
Peticion = "delete from tabla where nombre='" & txNombre.Text & "'"
3
Conec.DDL(Peticion)
4End If
Usamos un MsgBox de Si/No para que el usuario confirme si realmente desea eliminar el registro, si la
respuesta es "Si" se ejecutaran las respectivas instrucciones SQL
Nuevo Registro
En MySQL o mas espeficicamente para estos usos del MySQL no es necesario crear un nuevo registro en
blanco antes de insertar datos (en otros tipos de enlace a datos como DataBindings o DataTableAdapter si es
necesario) Por esta razon, en el boton "Nuevo" simplemente colocaremos instrucciones para "dejar en blanco"
el formulario estableciendo las propiedades Text de los controles a ="

Вам также может понравиться