Académique Documents
Professionnel Documents
Culture Documents
Net y ODBC Proyecto AjpdSoft
· Inicio Programacion: Acceso a MySQL mediante Visual Basic .Net y ODBC
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Proponer
Os explicamos paso a paso como acceder a MySQL con Visual Basic .Net, utilizando el driver MyODBC de MySQL. Este ejem
· Temas aplicable para acceso a cualquier motor de base de datos (Oracle, SQL Server, MySQL, etc.) mediante ODBC y Visual Basic .Net
· Top 10 fuente gratuito de la aplicación AjpdSoft Conexión BD Visual Basic .Net
· Trucos
· Tutoriales
· Usuario
· Wiki 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 instal
Nick o equipos que se conectarán a MySQL: descomprimiremos el fichero mysqlconnectorodbc3.51.16win32.zip y ejecutaremos
Pulsaremos "Next" para continuar:
Contraseña
Iniciar
Nuevo
usuario
English
Marcaremos "Custom" y pulsaremos "Next" para continuar:
Se instalará "MySQL Connector/ODBC", "MySQL Connector/ODBC Help" y "Utilities", pulsaremos "Next" para continuar:
http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=279 1/10
6/5/2016 Acceso a MySQL mediante Visual Basic .Net y ODBC Proyecto AjpdSoft
Pulsaremos "Install" para iniciar la instalación del driver ODBC de MySQL:
Para comprobar que se ha instalado correctamente el driver MyODBC, podremos crearnos uno de ejemplo, desde "Inicio" "Co
de control" "Herramientas administrativas" "Orígenes de datos ODBC". En la pestaña "DSN de sistema" (si queremos que
todos los usuarios del equipo) ó "DSN de usuario" (para que sólo esté disponible para el usuario actual con el que hem
pulsaremos en "Agregar":
Seleccionaremos el origen de datos "MySQL ODBC 3.51 Driver" (o el correspondiente a la versión de MySQL ODBC de
pulsaremos "Finalizar":
http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=279 2/10
6/5/2016 Acceso a MySQL mediante Visual Basic .Net y ODBC Proyecto AjpdSoft
Rellenaremos los datos correspondientes en la pestaña "Login":
Data Source Name: conexion_vb <>
Description: Conexión BD Visual Basic .Net <>
Server: localhost <>
User: root <>
Password: laquesea <>
Database: test <>
Una vez rellenados los datos anteriores pulsaremos "Test" para comprobar que la conexión 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, Acc
etc), abriremos Microsoft Visual Studio, seleccionaremos el menú "Archivo" "Nuevo proyecto...":
Nota: si eres usuario resgistrado (puedes hacerlo gratuitamente aquí) podrás descargar el código fuente completo (Source Cod
la aplicación: AjpdSoft Conexión BD Visual Basic .Net.
En "Tipos de proyecto" seleccionaremos "Visual Basic" "Windows", en "Plantillas" seleccionaremos "Aplicación para Windo
introduciremos el nombre del proyecto, en nuestro caso "AjpdSoft Conexión BD Visual Basic .Net". Pulsaremos "Aceptar" para co
El asistente de creación de nuevo proyecto Visual Studio (Visual Basic) nos creará un proyecto con la siguiente estructura: E
http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=279 3/10
6/5/2016 Acceso a MySQL mediante Visual Basic .Net y ODBC Proyecto AjpdSoft
Project), un diagrama de clase (ClassDiagram1.cd) y un formulario (Form1.vb). Con los siguientes ficheros: AjpdSoft Conex
.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 so
con el botón derecho del ratón sobre Form1.vb y seleccionamos "Cambiar nombre":
Pondremos el nombre que queramos dar al fichero del formulario y pulsaremos INTRO:
También cambiaremos el nombre al objeto Formulario, para ello seleccionaremos el formulario en si (el que aparece a la izquie
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" "Código" (o la t
En el código del formulario, antes de la declaración "Public Class..." colocaremos el siguiente código:
Imports System.Data
Imports System.Data.Odbc
http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=279 4/10
6/5/2016 Acceso a MySQL mediante Visual Basic .Net y ODBC Proyecto AjpdSoft
Nota: el espacio de nombres System.Data.Odbc es el proveedor de datos de .NET Framework para ODBC. Digamos que es l
encuentran las funciones y procedimientos necesarios para acceso a base de datos mediante ODBC. Por ello es necesario
empezar a trabajar con nuestro proyecto.
A continuación iremos añadiendo los controles necesarios para realizar nuestra aplicación, desde la ventana de "Cuadro de herra
Añadiremos 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 conexión"):
DropDownStyle = DropDownList (para que el usuario sólo pueda seleccionar elementos existentes de la lista).
Sorted = True (para que los elementos aparezcan ordenados).
Items = Hemos añadido los siguientes elementos: Estándar, Microsoft Access, MySQL, Oracle, SQL Server.
txtSQL (TextBox que aparece en el GroupBox "SQL a ejcutar"):
Multiline = True (para que el usuario pueda escribir varias líneas de SQL).
ScrolBars = Vertical (para que aparezcan las barras de desplazamiento verticales).
lInfo ( Label que aparece en el GroupBox "Datos de conexión"):
Autosize = False (para establecer un tamaño fijo).
BorderStyle = FixedSingle (para que aparezca un recuadro en el Label).
bDesconectar (Button que aparece en el GroupBox "Datos de conexión"):
Enabled = False (sólo se activará el botón cuando se establezca conexión con la Base de Datos).
El resto de los componentes visuales tendrán las propiedades estándar (por defecto), salvo la propiedad "Name" que, lóg
cambiado en los que utilizaremos para el código fuente.
Como se puede observar la ventana se divide en tres partes:
Datos de conexión: con el motor, el nombre del origen de datos, el usuario y la contraseña, un botón para conectar co
http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=279 5/10
6/5/2016 Acceso a MySQL mediante Visual Basic .Net y ODBC Proyecto AjpdSoft
otro para desconectar. Y el Label que indica el estado de la conexión.
SQL a ejecutar: sentencia SQL que introducirá el usuario y que será ejecutada, con el SQL, y tres botones para ejecu
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 ejecución de la consulta SQL.
En la parte de "Datos de conexión", en el botón "Conectar", colocaremos el siguiente código:
Private Sub bConectar_Click(ByVal sender As _
System.Object, ByVal e As System.EventArgs) _
Handles bConectar.Click
Try
If (txtMotor.Text = "Estándar") 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 conexión"
bDesconectar.Enabled = False
MsgBox(ex.Message)
End Try
End Sub
En este ejemplo no hemos distinguido la cadena de conexión "conexionBD" según el tipo de motor de BD que haya seleccion
estamos realizando un ejemplo para conexión con MySQL. Para el resto de motores, puede que requieran una cadena de co
principio, las pruebas realizadas demuestran que la conexión estándar (la utilizada en esta aplicación) es suficiente para conec
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 conexión será válida (utilizable) para todo el formulario. En nuestro caso hemos utilizado la clase "Od
realizar la conexión con la base de datos. Si el motor de base de datos fuese Microsfot SQL Server podríamos haber utilizado "
Oracle "oracleConnection".
En el botón "Desconectar" colocaremos el siguiente código:
Private Sub bDesconectar_Click(ByVal sender _
http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=279 6/10
6/5/2016 Acceso a MySQL mediante Visual Basic .Net y ODBC Proyecto AjpdSoft
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 botón "Conectar", se desconectará la conexión a la base de datos, en caso contrar
error porque no se ha creado el objeto "conexionBD". Por ello la propiedad "Enabled" del botón "Desconectar" está a "False
"True" en el botón "Conectar", si la conexión se ha establecido correctamente.
En el botón "Guardar" colocaremos el siguiente código 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 botón "Cargar" colocaremos el siguiente código 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 botón "Ejecutar" colocaremos el siguiente código 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
http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=279 7/10
6/5/2016 Acceso a MySQL mediante Visual Basic .Net y ODBC Proyecto AjpdSoft
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 d
separados por tabulador, hemos utilizando un "OdbcDataReader ": proporciona el modo de lectura de una secuencia de filas d
avance de un origen de datos.
En el botón "Guardar Resultado SQL" colocaremos el siguiente código 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 ejecución 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 botón "Seleccionar todo" colocaremos el siguiente código 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 botón "Copiar" colocaremos el siguiente código 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 aplicación hemos utilizado:
Microsoft Visual Studio .Net 2005.
MyODBC 3.51.
MySQL Server 4.1.
Microsoft Windows XP SP2.
AjpdSoft Conexión BD Visual Basic .Net
Para acceso a datos de sólo lectura (consulta de datos) hemos utilizado "OdbcDataReader", si quisiéramos obtener un re
podremos utilizar "OdbcDataAdapter".
El código fuente completo del formulario principal de la aplicación en Visual Basic .Net:
Imports System.Data
Imports System.Data.Odbc
Imports System
Imports 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 = "Estándar") Then
conexionBD = New OdbcConnection("dsn=" & _
txtODBC.Text & ";uid=" & _
txtUsuario.Text & ";pwd=" & _
txtContrasena.Text & ";")
End If
Política de cookies
If (txtMotor.Text = "Microsoft Access") Then
conexionBD = New OdbcConnection("dsn=" & _
txtODBC.Text & ";uid=" & _ OK
Utilizamos cookies propias y de terceros. Al navegar entendemos que aceptas el uso de cookies. +Info.
txtUsuario.Text & ";pwd=" & _
txtContrasena.Text & ";")
End If
http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=279 8/10
6/5/2016 Acceso a MySQL mediante Visual Basic .Net y ODBC Proyecto AjpdSoft
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 conexión"
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 (*.*)|*.*"
http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=279 9/10
6/5/2016 Acceso a MySQL mediante Visual Basic .Net y ODBC Proyecto AjpdSoft
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 ejecución 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
Anuncios
Enviado el Thursday, 28 June a las 17:10:56 por ajpdsoft
Este sitio web NO CONTIENE malware, todos los programas con código fuente aquí. Autor: Alonso Javier Pérez Díaz Google+ Síguenos en Google+
http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=279 10/10