You are on page 1of 29

Conectar VB.

NET con MySql


Para conectar un proyecto de visual Studio 2010 con el MySql, sigamos los siguientes pasos!! 1. Crear un proyecto normal. 2. Para poder conectar la base de datos se debe instalar una librera disponible en Connector / Net, una vez descargado procedemos a instalarlo. 3. Vamos al proyecto y agregamos una referencia de la librera MySql.Data.dll, la cul se encuentra en C:\Archivos de programa\MySQL\MySQL Connector Net 6.5.4\Assemblies\v4.0\MySql.Data.dll

4. Creamos una clase llamada Conexin y agregamos el siguiente cdigo.


Imports MySql.Data.MySqlClient Public Class conexion Private MysqlCommand As New MySqlCommand Dim MysqlConnString As String = "server=Miservidor; user id= myusuario ; password=myContrasea" Public MysqlConexion As MySqlConnection = New MySqlConnection(MysqlConnString) Public Sub Probarconexion() Try MysqlConexion.Open() MsgBox("la conexin fue exitosa")

MysqlConexion.Close() Catch ex As Exception MsgBox("La conexin no fue exitosa") End Try End Sub End Class 5. Creamos un botn en el formulario y agregamos el siguiente cdigo en el evento Click

Private Sub btn_Click(sender As System.Object, e As System.EventArgs) Handles btn.Click Dim s As New conexion s.Probarconexion() End Sub

6. Listo!!

Acceso a MySQL mediante Visual Basic .Net y ODBC En primer lugar descargaremos el driver ODBC de la web http://www.mysql.com/products/connector. Seguidamente lo instalaremos en el equipo o equipos que se conectarn a MySQL: descomprimiremos el fichero mysql-connector-odbc-3.51.16-win32.zip y ejecutaremos setup.exe: Pulsaremos "Next" para continuar:

Marcaremos "Custom" y pulsaremos "Next" para continuar:

Se instalar "MySQL Connector/ODBC", "MySQL Connector/ODBC Help" y "Utilities", pulsaremos "Next" para continuar:

Pulsaremos "Install" para iniciar la instalacin del driver ODBC de MySQL:

Para comprobar que se ha instalado correctamente el driver MyODBC, podremos crearnos uno de ejemplo, desde "Inicio" - "Configuracin" - "Panel de control" - "Herramientas administrativas" - "Orgenes de datos ODBC". En la pestaa "DSN de sistema" (si queremos que est disponible para todos los usuarios del equipo) "DSN de usuario" (para que slo est disponible para el usuario actual con el que hemos iniciado sesin), pulsaremos en "Agregar":

Seleccionaremos el origen de datos "MySQL ODBC 3.51 Driver" (o el correspondiente a la versin de MySQL ODBC de que dispongamos), pulsaremos "Finalizar":

Rellenaremos los datos correspondientes en la pestaa "Login": Data Source Name: conexion_vb <> Description: Conexin BD Visual Basic .Net <> Server: localhost <> User: root <> Password: laquesea <> Database: test <> Una vez rellenados los datos anteriores pulsaremos "Test" para comprobar que la conexin funciona correctamente:

Si no ha habido problemas mostrar una ventana como esta:

Con el texto: Success; connection was made! Tras instalar el driver MyODBC correspondiente (o cualquier otro de cualquier motor de base de datos: Oracle SQL Server, Access, DB2, Informix, etc), abriremos Microsoft Visual Studio, seleccionaremos el men "Archivo" "Nuevo proyecto...":

Nota: si eres usuario resgistrado (puedes hacerlo gratuitamente aqu) podrs descargar el cdigo fuente completo (Source Code - Open Source) de la aplicacin: AjpdSoft Conexin BD Visual Basic .Net. En "Tipos de proyecto" seleccionaremos "Visual Basic" - "Windows", en "Plantillas" seleccionaremos "Aplicacin para Windows":. En "Nombre" introduciremos el nombre del proyecto, en nuestro caso "AjpdSoft Conexin BD Visual Basic .Net". Pulsaremos "Aceptar" para continuar:

El asistente de creacin de nuevo proyecto Visual Studio (Visual Basic) nos crear un proyecto con la siguiente estructura: El proyecto en si (My Project), un diagrama de clase (ClassDiagram1.cd) y un formulario (Form1.vb).

Con los siguientes ficheros: AjpdSoft Conexin BD Visual Basic .Net.vbproj, ClassDiagram1.cd, Form1.Designer.vb, Form1.resx, Form1.vb. En nuestro caso hemos decidido cambiar el nombre al fichero del formulario, para ello, desde la ventana de "Explorador de soluciones", pulsamos con el botn derecho del ratn sobre Form1.vb y seleccionamos "Cambiar nombre":

Pondremos el nombre que queramos dar al fichero del formulario y pulsaremos INTRO:

Tambin cambiaremos el nombre al objeto Formulario, para ello seleccionaremos el formulario en si (el que aparece a la izquierda y en la ventana de "Propiedades", nos situamos en la propiedad "Name" e introducimos en nombre que queramos darle al formulario:

Desde el IDE de desarrollo de Visual Studio .Net, con nuestro formulario abierto, pulsaremos en el men "Ver" "Cdigo" (o la tecla F7):

En el cdigo del formulario, antes de la declaracin "Public Class..." colocaremos el siguiente cdigo: Imports System.Data Imports System.Data.Odbc

Nota: el espacio de nombres System.Data.Odbc es el proveedor de datos de .NET Framework para ODBC. Digamos que es la "librera" donde se encuentran las funciones y procedimientos necesarios para acceso a base de datos mediante ODBC. Por ello es necesario importarlo antes de empezar a trabajar con nuestro proyecto. A continuacin iremos aadiendo los controles necesarios para realizar nuestra aplicacin, desde la ventana de "Cuadro de herramientas":

Aadiremos GroupBox, ComboBox, TextBox, Button, etc. El formulario quedar de la siguiente manera:

Las propiedades que hemos cambiado en los controles han sido las siguientes:

txtMotor (ComboBox del GroupBox "Datos de conexin"): o DropDownStyle = DropDownList (para que el usuario slo pueda seleccionar elementos existentes de la lista). o Sorted = True (para que los elementos aparezcan ordenados). o Items = Hemos aadido los siguientes elementos: Estndar, Microsoft Access, MySQL, Oracle, SQL Server. txtSQL (TextBox que aparece en el GroupBox "SQL a ejcutar"): o Multiline = True (para que el usuario pueda escribir varias lneas de SQL). o ScrolBars = Vertical (para que aparezcan las barras de desplazamiento verticales). lInfo ( Label que aparece en el GroupBox "Datos de conexin"): o Autosize = False (para establecer un tamao fijo). o BorderStyle = FixedSingle (para que aparezca un recuadro en el Label). bDesconectar (Button que aparece en el GroupBox "Datos de conexin"): o Enabled = False (slo se activar el botn cuando se establezca conexin con la Base de Datos).

El resto de los componentes visuales tendrn las propiedades estndar (por defecto), salvo la propiedad "Name" que, lgicamente, la hemos cambiado en los que utilizaremos para el cdigo fuente. Como se puede observar la ventana se divide en tres partes:

Datos de conexin: con el motor, el nombre del origen de datos, el usuario y la contrasea, un botn para conectar con la base de datos y otro para desconectar. Y el Label que indica el estado de la conexin. SQL a ejecutar: sentencia SQL que introducir el usuario y que ser ejecutada, con el SQL, y tres botones para ejecutar el SQL, abrir un fichero con alguna sentencia SQL previamente guardada y guardar la sentencia SQL actual en un fichero. El cuadro de texto donde se mostrar el resultado de la ejecucin de la consulta SQL.

En la parte de "Datos de conexin", en el botn "Conectar", colocaremos el siguiente cdigo: Private Sub bConectar_Click(ByVal sender As _ System.Object, ByVal e As System.EventArgs) _ Handles bConectar.Click Try If (txtMotor.Text = "Estndar") Then conexionBD = New OdbcConnection("dsn=" & _ txtODBC.Text & ";uid=" & _ txtUsuario.Text & ";pwd=" & _ txtContrasena.Text & ";") End If If (txtMotor.Text = "Microsoft Access") Then conexionBD = New OdbcConnection("dsn=" & _ txtODBC.Text & ";uid=" & _ txtUsuario.Text & ";pwd=" & _ txtContrasena.Text & ";") End If If (txtMotor.Text = "MySQL") Then conexionBD = New OdbcConnection("dsn=" & _ txtODBC.Text & ";uid=" & _ txtUsuario.Text & ";pwd=" & _ txtContrasena.Text & ";") End If If (txtMotor.Text = "Oracle") Then conexionBD = New OdbcConnection("dsn=" & _ txtODBC.Text & ";uid=" & _ txtUsuario.Text & ";pwd=" & _ txtContrasena.Text & ";") End If If (txtMotor.Text = "Sql Server") Then conexionBD = New OdbcConnection("dsn=" & _ txtODBC.Text & ";uid=" & _ txtUsuario.Text & ";pwd=" & _ txtContrasena.Text & ";")

End If conexionBD.Open() lInfo.Text = "Conectado correctamente" bDesconectar.Enabled = True Catch ex As OdbcException lInfo.Text = "Error en la conexin" bDesconectar.Enabled = False MsgBox(ex.Message) End Try End Sub En este ejemplo no hemos distinguido la cadena de conexin "conexionBD" segn el tipo de motor de BD que haya seleccionado el usuario, pues estamos realizando un ejemplo para conexin con MySQL. Para el resto de motores, puede que requieran una cadena de conexin diferente. En principio, las pruebas realizadas demuestran que la conexin estndar (la utilizada en esta aplicacin) es suficiente para conectar con Oracle, SQL Server y MySQL. Declararemos, dentro de "Public Class formMenuPrincipal" la clase "OdbcConnection", de la siguiente forma:

Quedar dentro de "Public Class formMenuPrincipal": Public conexionBD As OdbcConnection De esta forma el objeto conexin ser vlida (utilizable) para todo el formulario. En nuestro caso hemos utilizado la clase "OdbcConnection" para realizar la conexin con la base de datos. Si el motor de base de datos fuese Microsfot SQL Server podramos haber utilizado "sqlConnection", para Oracle "oracleConnection". En el botn "Desconectar" colocaremos el siguiente cdigo:

Private Sub bDesconectar_Click(ByVal sender _ As System.Object, ByVal e As System.EventArgs) _ Handles bDesconectar.Click Try conexionBD.Close() lInfo.Text = "Desconectado correctamente" Catch ex As OdbcException 'silenciosa lInfo.Text = "Desconectado correctamente" End Try End Sub
De esta forma, si el usuario ha pulsado el botn "Conectar", se desconectar la conexin a la base de datos, en caso contrario, este cdigo dara error porque no se ha creado el objeto "conexionBD". Por ello la propiedad "Enabled" del

botn "Desconectar" est a "False", slo se cambia a "True" en el botn "Conectar", si la conexin se ha establecido correctamente. En el botn "Guardar" colocaremos el siguiente cdigo Visual Basic .Net:

Private Sub bGuardar_Click(ByVal sender As _ System.Object, ByVal e As System.EventArgs) _ Handles bGuardar.Click Dim dlAbrir As New _ System.Windows.Forms.SaveFileDialog dlAbrir.Filter = "Archivos de Texto (*.txt)|*.txt|" & _ "Archivos de SQL (*.sql)|*.sql|" & _ "Todos los archivos (*.*)|*.*" dlAbrir.CheckFileExists = False dlAbrir.OverwritePrompt = True dlAbrir.Title = "Guardar SQL en fichero" dlAbrir.ShowDialog() If dlAbrir.FileName <> "" Then Dim fichero As New _ System.IO.StreamWriter(dlAbrir.FileName) fichero.WriteLine(txtSQL.Text) fichero.Close() End If End Sub
En el botn "Cargar" colocaremos el siguiente cdigo Visual Basic .Net:

Private Sub bCargar_Click(ByVal sender As _ System.Object, ByVal e As System.EventArgs) _ Handles bCargar.Click Dim dlAbrir As New _ System.Windows.Forms.OpenFileDialog dlAbrir.Filter = "Archivos de Texto (*.txt)|*.txt|" & _ "Archivos de SQL (*.sql)|*.sql|" & _ "Todos los archivos (*.*)|*.*" dlAbrir.CheckFileExists = False dlAbrir.Multiselect = False dlAbrir.Title = "Abrir fichero SQL" dlAbrir.ShowDialog() If dlAbrir.FileName <> "" Then Dim fichero As New _ System.IO.StreamReader(dlAbrir.FileName) txtSQL.Text = fichero.ReadToEnd() fichero.Close() End If End Sub
En el botn "Ejecutar" colocaremos el siguiente cdigo Visual Basic .Net:

Private Sub bEjecutar_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles bEjecutar.Click Try Dim sql As String = txtSQL.Text

Dim comandoSQL As OdbcCommand = _ New OdbcCommand(sql, conexionBD) Dim resultadoSQL As OdbcDataReader = _ comandoSQL.ExecuteReader() Dim i As Integer txtResultado.Clear() 'Ponemos una fila con el nombre de los campos For i = 0 To resultadoSQL.FieldCount - 1 If txtResultado.Text <> "" Then txtResultado.Text = txtResultado.Text & _ Chr(9) & resultadoSQL.GetName(i) Else txtResultado.Text = resultadoSQL.GetName(i) End If Next i While resultadoSQL.Read txtResultado.Text = txtResultado.Text & _ Chr(13) & Chr(10) For i = 0 To resultadoSQL.FieldCount - 1 If i = 0 Then txtResultado.Text = txtResultado.Text & _ resultadoSQL(i).ToString Else txtResultado.Text = txtResultado.Text & _ Chr(9) & resultadoSQL(i).ToString End If Next i End While Catch ex As OdbcException MsgBox(ex.Message) End Try End Sub
Para este procedimiento, que ejecuta la consulta SQL introducida por el usuario y muestra el resultado con los valores de todos los campos separados por tabulador, hemos utilizando un "OdbcDataReader ": proporciona el modo de lectura de una secuencia de filas de datos de tipo slo avance de un origen de datos. En el botn "Guardar Resultado SQL" colocaremos el siguiente cdigo Visual Basic .Net:

Private Sub bGuardarResultado_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles bGuardarResultado.Click Dim dlAbrir As New _ System.Windows.Forms.SaveFileDialog dlAbrir.Filter = "Archivos de texto (*.txt)|*.txt|" & _ "Todos los archivos (*.*)|*.*" dlAbrir.CheckFileExists = False dlAbrir.OverwritePrompt = True dlAbrir.Title = "Guardar resultado ejecucin SQL" dlAbrir.ShowDialog() If dlAbrir.FileName <> "" Then Dim fichero As New _

System.IO.StreamWriter(dlAbrir.FileName) fichero.WriteLine(txtResultado.Text) fichero.Close() End If End Sub


En el botn "Seleccionar todo" colocaremos el siguiente cdigo Visual Basic .Net:

Private Sub bSeleccionarTodo_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles bSeleccionarTodo.Click txtResultado.SelectAll() End Sub
En el botn "Copiar" colocaremos el siguiente cdigo Visual Basic .Net:

Private Sub bCopiar_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles bCopiar.Click txtResultado.Copy() End Sub
ANEXO Para desarrollar esta aplicacin hemos utilizado:

Microsoft Visual Studio .Net 2005. MyODBC 3.51. MySQL Server 4.1. Microsoft Windows XP SP2. AjpdSoft Conexin BD Visual Basic .Net

Para acceso a datos de slo lectura (consulta de datos) hemos utilizado "OdbcDataReader", si quisiramos obtener un resultado modificable podremos utilizar "OdbcDataAdapter". El cdigo fuente completo del formulario principal de la aplicacin en Visual Basic .Net:

Imports Imports Imports Imports

System.Data System.Data.Odbc System System.IO

Public Class formMenuPrincipal Public conexionBD As OdbcConnection Private Sub bConectar_Click(ByVal sender As _ System.Object, ByVal e As System.EventArgs) _ Handles bConectar.Click Try If (txtMotor.Text = "Estndar") Then conexionBD = New OdbcConnection("dsn=" & _ txtODBC.Text & ";uid=" & _ txtUsuario.Text & ";pwd=" & _ txtContrasena.Text & ";") End If

If (txtMotor.Text = "Microsoft Access") Then conexionBD = New OdbcConnection("dsn=" & _ txtODBC.Text & ";uid=" & _ txtUsuario.Text & ";pwd=" & _ txtContrasena.Text & ";") End If If (txtMotor.Text = "MySQL") Or (txtMotor.Text = "") Then conexionBD = New OdbcConnection("dsn=" & _ txtODBC.Text & ";uid=" & _ txtUsuario.Text & ";pwd=" & _ txtContrasena.Text & ";") End If If (txtMotor.Text = "Oracle") Then conexionBD = New OdbcConnection("dsn=" & _ txtODBC.Text & ";uid=" & _ txtUsuario.Text & ";pwd=" & _ txtContrasena.Text & ";") End If If (txtMotor.Text = "Sql Server") Then conexionBD = New OdbcConnection("dsn=" & _ txtODBC.Text & ";uid=" & _ txtUsuario.Text & ";pwd=" & _ txtContrasena.Text & ";") End If conexionBD.Open() lInfo.Text = "Conectado correctamente" bDesconectar.Enabled = True bEjecutar.Enabled = True Catch ex As OdbcException lInfo.Text = "Error en la conexin" bDesconectar.Enabled = False bEjecutar.Enabled = False MsgBox(ex.Message) End Try End Sub Private Sub bDesconectar_Click(ByVal sender _ As System.Object, ByVal e As System.EventArgs) _ Handles bDesconectar.Click Try conexionBD.Close() lInfo.Text = "Desconectado correctamente" Catch ex As OdbcException 'silenciosa lInfo.Text = "Desconectado correctamente" End Try End Sub Private Sub bEjecutar_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles bEjecutar.Click Try Dim sql As String = txtSQL.Text

Dim comandoSQL As OdbcCommand = _ New OdbcCommand(sql, conexionBD) Dim resultadoSQL As OdbcDataReader = _ comandoSQL.ExecuteReader() Dim i As Integer txtResultado.Clear() For i = 0 To resultadoSQL.FieldCount - 1 If txtResultado.Text <> "" Then txtResultado.Text = txtResultado.Text & _ Chr(9) & resultadoSQL.GetName(i) Else txtResultado.Text = resultadoSQL.GetName(i) End If Next i While resultadoSQL.Read txtResultado.Text = txtResultado.Text & _ Chr(13) & Chr(10) For i = 0 To resultadoSQL.FieldCount - 1 If i = 0 Then txtResultado.Text = txtResultado.Text & _ resultadoSQL(i).ToString Else txtResultado.Text = txtResultado.Text & _ Chr(9) & resultadoSQL(i).ToString End If Next i End While Catch ex As OdbcException MsgBox(ex.Message) End Try End Sub Private Sub bGuardar_Click(ByVal sender As _ System.Object, ByVal e As System.EventArgs) _ Handles bGuardar.Click Dim dlAbrir As New _ System.Windows.Forms.SaveFileDialog dlAbrir.Filter = "Archivos de Texto (*.txt)|*.txt|" & _ "Archivos de SQL (*.sql)|*.sql|" & _ "Todos los archivos (*.*)|*.*" dlAbrir.CheckFileExists = False dlAbrir.OverwritePrompt = True dlAbrir.Title = "Guardar SQL en fichero" dlAbrir.ShowDialog() If dlAbrir.FileName <> "" Then Dim fichero As New _ System.IO.StreamWriter(dlAbrir.FileName) fichero.WriteLine(txtSQL.Text) fichero.Close() End If End Sub

Private Sub bCargar_Click(ByVal sender As _ System.Object, ByVal e As System.EventArgs) _ Handles bCargar.Click Dim dlAbrir As New _ System.Windows.Forms.OpenFileDialog dlAbrir.Filter = "Archivos de Texto (*.txt)|*.txt|" & _ "Archivos de SQL (*.sql)|*.sql|" & _ "Todos los archivos (*.*)|*.*" dlAbrir.CheckFileExists = False dlAbrir.Multiselect = False dlAbrir.Title = "Abrir fichero SQL" dlAbrir.ShowDialog() If dlAbrir.FileName <> "" Then Dim fichero As New _ System.IO.StreamReader(dlAbrir.FileName) txtSQL.Text = fichero.ReadLine fichero.Close() End If End Sub Private Sub bLimpiar_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles bLimpiar.Click txtResultado.Clear() End Sub Private Sub bCopiar_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles bCopiar.Click txtResultado.Copy() End Sub Private Sub bSeleccionarTodo_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles bSeleccionarTodo.Click txtResultado.SelectAll() End Sub Private Sub bGuardarResultado_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles bGuardarResultado.Click Dim dlAbrir As New _ System.Windows.Forms.SaveFileDialog dlAbrir.Filter = "Archivos de texto (*.txt)|*.txt|" & _ "Todos los archivos (*.*)|*.*" dlAbrir.CheckFileExists = False dlAbrir.OverwritePrompt = True dlAbrir.Title = "Guardar resultado ejecucin SQL" dlAbrir.ShowDialog() If dlAbrir.FileName <> "" Then Dim fichero As New _ System.IO.StreamWriter(dlAbrir.FileName) fichero.WriteLine(txtResultado.Text) fichero.Close() End If End Sub End Class

Como conectar Visual Basic .NET con MYSQL


Casiopea nos vuelve a sorprender con otro excelente aporte, cualquier duda postearla aqu.

1. Enlazar VB y MySQL. 1.1 Objetivos del tema.


Documentar los pasos a seguir para el uso de VB con bases de datos de MySQL.

1.2 Introduccin.
MySQL se puede enlazar con el uso de ODBC, pero parece ms cmodo, el uso del mismo sistema basado en los objetos de conexin. Estos estn desarrollados y se pueden descargar de la pgina de SUN. Igualmente podemos descargar de la misma pgina el gestor de la base de datos, es decir MySQL y herramientas grficas de administracin.

1.3 Objetos necesarios.


La base de datos, mysql-noinstall-5.1.33-win32 Los objetos de conexin para Visual Studio NET, mysql-connector-net-5.x.x Por comodidad la herramienta de administracin del entorno de Windows, mysql-gui-tools-noinstall-5.0-r17-win32 Se puede elegir entre descomprimir en la ruta que deseemos, o bien descargar una versin con instalador.

1.4 Utilizacin.
Instalar el gestor de MySQL, se compone de distintos elementos, que cumplen con las necesidades de administracin desde la lnea de comandos. El comando de inicio del gestor es
Cdigo:

C:MySQL[/img]mysqld u root Una vez que se ha lanzado el gestor de MySQL, el servidor de MySQL, la ventana de DOS, quedar abierta, y ejecutndose dicho servidor. Mientras estemos utilizando VB con MySQL deber estar abierta dicha ventana.

Podemos crear un archivo de proceso por lotes, un escrip, para su inicio y otro para su posterior parada. Este sera el de inicio.

Cdigo:

ECHO OFF CLS ECHO INICIO DE MySQL D: Cd D:\Mysql\mysql-5.1.33-win32\bin MySQLd -u root

Y el de parada

Cdigo:

ECHO OFF CLS ECHO PARADA DE MySQL D: Cd D:\Mysql\mysql-5.1.33-win32\bin MySQLAdmin -u root shutdown Pause

Con estos dos archivos tenemos suficiente para probarlo. MySQL es una base datos muy completa, esos parmetros son los mnimos imprescindibles, a medida que se domina la herramienta, se debern incluir ms parmetros para su correcta utilizacin. El uso se supone en modo local, 'localhost'.

1.5 Uso de VB con MySQL.


El primer paso ser definir en referencias el uso de la librera, espacio de nombres, como deseemos llamarlo, de MySQL. Deberemos saber donde hemos instalado dicha utilidad de SUN para su localizacin. Para ello hay que acudir a Proyecto-Agregar referencia. Y en la ventana

Pinchar en examinar hasta llegar a su ubicacin, que por defecto es la que vemos. Una vez seleccionada ya veremos como esta incluida la referencia en la pestaa de .Net.

A partir de aqu ya podemos hacer referencia a los mismos objetos que en SQL o en Acces para el uso de la base de datos, salvando las distancias claro est.

1.6 Creamos la base de datos.


Claro est que no hay porque hacerlo desde VB, pero veamos como hacerlo de forma mnima. Antes de eso hay que configurar la conexin a la base de datos con el objeto Connection. El nombre de la base de datos se supone declarado a nivel de mdulo, la ruta ser dentro del directorio de datos de MySQL, por defecto.

Cdigo:

Public Sub ConfigConexion( ByRef Conexion As MySql.Data.MySqlClient.MySqlConnection) Dim CadenaConexion As String = "Data Source=localhost;" & _ "Database=" & NombreBaseDatos & ";" & _ "User Id=root;Password=" Conexion = New MySql.Data.MySqlClient.MySqlConnection(CadenaConexion) Try Conexion.Open() Catch ex As MySql.Data.MySqlClient.MySqlException MsgBox("No se ha podido establecer " & vbCrLf & _ "la conexin con la base de datos.", MsgBoxStyle.Critical) Finally Select Case Conexion.State Case ConnectionState.Open Conexion.Close() End Select End Try End Sub

Est es una opcin de entre varias posibles. Hay que tener presente que la conexin es donde ms cambios vamos a encontrar siempre. Despus vamos a necesitar un objeto del tipo Command que ser el que realizar la tarea.

Cdigo:

Private Sub CrearBaseDatos() Dim Conexion As New MySql.Data.MySqlClient.MySqlConnection Dim CadenaSQL As String = "CREATE DATABASE " & NombreBaseDatos & ";" Dim CadenaConexion As String = "Data Source=localhost;User Id=root;" Dim Comando As New MySql.Data.MySqlClient.MySqlCommand(CadenaSQL) Conexion = New MySql.Data.MySqlClient.MySqlConnection(CadenaConexion) Try Conexion.Open() Comando.Connection = Conexion Comando.CommandType = CommandType.Text Try Select Case Comando.ExecuteNonQuery Case 0 MsgBox("No se ha creado") Case 1 MsgBox("Creada") Case Else MsgBox("A saber que ha pasado") End Select Catch ex As MySql.Data.MySqlClient.MySqlException MsgBox("No se ha podido crear" & vbCrLf & _ "la base de datos.", MsgBoxStyle.Critical, Me.Text) End Try Catch ex As MySql.Data.MySqlClient.MySqlException MsgBox("No se ha podido establecer la" & vbCrLf & _ "conexin con la base de datos.", MsgBoxStyle.Critical, Me.Text)

Finally Select Case Conexion.State Case ConnectionState.Open Conexion.Close() End Select End Try Conexion = Nothing End Sub

Esta es la sintaxis mnima para crear una base de datos.

Cdigo:

Dim CadenaSQL As String = "CREATE DATABASE " & NombreBaseDatos & ";"

Como no hay que esperar datos devueltos el objeto a utilizar para su creacin es un objeto Command.

Cdigo:

Conexion = New MySql.Data.MySqlClient.MySqlConnection(CadenaConexion) Conexion.Open() Comando.Connection = Conexion Comando.CommandType = CommandType.Text Select Case Comando.ExecuteNonQuery

La pregunta de control se basa en que haya un dato devuelto, que es la creacin de la base de datos.

Cdigo:

Select Case Comando.ExecuteNonQuery Case 0 MsgBox("No se ha creado") Case 1 MsgBox("Creada") Case Else MsgBox("A saber que ha pasado") End Select

En el ejemplo se supone que forma parte de una utilidad y por eso el objeto conexin se configura en el mismo procedimiento.

Tambin podemos hacerlo desde la herramienta grfica de administracin, pulsando en la zona de bases de datos y con el botn derecho del ratn seleccionar Create New Schema.

Respondemos OK y la base quedar creada.

1.7 Creamos las tablas.


Con la misma filosofa se puede proceder a crear la tablas de la base de datos. La sintaxis

mnima puede ser esta.

Cdigo:

"CREATE TABLE IF NOT EXISTS Tipo_Socio " & _ "( " & _ "Codigo VARCHAR(2) PRIMARY KEY," & _ "Denominacion VARCHAR(12) " & _ ")"

Solo hay que ceirse a la sintaxis de SQL. Un ejemplo algo ms complejo

Cdigo:

"CREATE TABLE IF NOT EXISTS Serv_Realiz " & _ "( " & _ "Socio VARCHAR(5)," & _ "Fecha VARCHAR(8), " & _ "Reserva VARCHAR(6), " & _ "Servicio VARCHAR(3) REFERENCES Servicios ON DELETE NO ACTION " & _ "ON UPDATE NO ACTION, " & _ "Numero VARCHAR(2) REFERENCES Serv_Exist ON DELETE NO ACTION " & _ "ON UPDATE NO ACTION, " & _ "Hora VARCHAR(5), " & _ "PRIMARY KEY (Socio, Fecha, Reserva)," & _ "FOREIGN KEY (Socio) REFERENCES Socios ON DELETE NO ACTION " & _ "ON UPDATE NO ACTION, " & _ "UNIQUE (Socio, Fecha, Reserva) " & _ ")"

El cdigo puede ser el que sigue:

Cdigo:

Private Sub CreaTabla(ByVal Conexion As MySql.Data.MySqlClient.MySqlConnection, _ ByVal Comando As MySql.Data.MySqlClient.MySqlCommand, _ ByVal CadenaSQL As String) Comando = New MySql.Data.MySqlClient.MySqlCommand(CadenaSQL) Comando.Connection = Conexion Comando.CommandType = CommandType.Text Try ' capturamos si hay errores Select Case Comando.ExecuteNonQuery Case 0 MsgBox("No se ha creado " & CadenaSQL, MsgBoxStyle.Critical, Me.Text) Case 1 ' Creada la tabla Case Else MsgBox("A saber que ha pasado") End Select Catch ex As Exception ' si hay errores retornamos el mensaje de error MsgBox(ex.Message, MsgBoxStyle.Critical, Me.Text) ' con Finally que es parte de TRY CATCH y END TRY ' ponemos el cdigo que se ejecutar se produzca o no un error Finally Comando = Nothing ' lo eliminamos de la memoria

End Try End Sub

La creacin de la tabla se basa en el mismo sistema que antes, el uso de un objeto command. El objeto connection se supone ya configurado.

Cdigo:

Comando = New MySql.Data.MySqlClient.MySqlCommand(CadenaSQL) Comando.Connection = Conexion Comando.CommandType = CommandType.Text Select Case Comando.ExecuteNonQuery Case 0 MsgBox("No se ha creado " & CadenaSQL, MsgBoxStyle.Critical, Me.Text) Case 1 ' Creada la tabla Case Else MsgBox("A saber que ha pasado") End Select

Este procedimiento se llama pasando como parmetros un objeto Connection, un objeto Command, que se podra crear en el mismo procedimiento, no es imprescindible, y la instruccin SQL con la descripcin de la tabla.

Cdigo:

CreaTabla(Conexion, Comando, CadenaSQL)

Este procedimiento se puede basar en un array que contenga todas las tablas y un sistema adjunto de checkbox que habilite las que deseamos crear, en la fase de pruebas de la aplicacin es cmodo, despus no tiene sentido.

Cdigo:

' Tablas de apoyo V(1).Nombre = "Tipos de socios" V(1).Create = "CREATE TABLE IF NOT EXISTS Tipo_Socio " & _ "( " & _ "Codigo VARCHAR(2) PRIMARY KEY," & _ "Denominacion VARCHAR(12) " & _ ")"

El bucle podra ser algo as.

Cdigo:

While X < V.Length Objeto = CType(Me.Panel01.Controls.Item(X), CheckBox) Select Case Objeto.Checked Case True

CreaTabla(Conexion, Comando, V(X).Create) End Select X=X+1 End While

Esta es una forma de crear las tablas desde programa. Pero disponemos de la opcin del programa de administracin del entorno grfico que es comodo. Para ello arrancamos el programa MySQLAdministrator y pulsamos en el botn de Create Table. La ventana del programa es esta.

Seleccionamos en la lista de la izquierda la base de datos que deseamos utilizar y despus pulsamos Create Table. La ventana de creacin de una tabla es la que vemos y solo hay que ir aadiendo los campos e ir jugando con las pestaas de opciones en funcin de las necesidades de cada campo.

Al finalizar pulsar Apply Changes veremos como aparece una ventana con el cdigo SQL de la tabla, solo tenemos que pulsar Execute, y la tabla se incorporar a la base de datos.

Y el resultado es la adicin de la tabla a la base de datos. [img] align="" width="692" height="79" src="imagenes/Nivel_3_1_img_8.jpg[/img] Podemos observar como el motor de la tabla est mal seleccionado con respecto al resto de las tablas de la base de datos. Habra que seleccionar con el botn derecho en la tabla la opcin de editar tabla, para volver a la misma ventana de antes y en la pestaa de Table Options cambiar el motor de la tabla para que todo quede bien.

Y as con todas las tablas que deseemos crear o modificar. En esa ventana tambin podemos editar los datos de las tablas para comprobar el correcto funcionamiento de nuestros programas, seleccionando la tabla con el botn derecho del ratn la opcin de Edit Table Data. Disponemos de ms opciones es cuestin de documentarse.

1.8 Resto de acciones.


Con respecto al resto de acciones que se pueden presentar en un programa, no hay diferencia, su uso se basa en la misma filosofa que con SQLServer o Access, salvando las diferencias que podamos encontrar en la sintaxis de SQL.

La utilizacin de los objetos de MySQL puede facilitarse si importamos en las propiedades del proyecto el espacio de nombres de MySQL.Data.MySQLClient. Proyecto -Propiedades de proyecto -Referencias. De esa forma podemos escribir simplemente.

Cdigo:

Dim ObjSQL As MySqlConnection Que siempre es ms cmodo.

Autor: casiopea

You might also like