Fecha y hora actual: Lunes 01 Sep 2014 20:29
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

Como conectar Visual Basic .net con MySQL

Responder al Tema

Índice del Foro > Visual Basic .NET > Como conectar Visual Basic .net con MySQL

Autor Mensaje
Tesis
Administrador


Registrado: 04 Mar 2007
Mensajes: 2975
Ubicación: Valencia - España

Mensaje Publicado: Martes 12 May 2009 13:17

Título del mensaje: Como conectar Visual Basic .net con MySQL

Responder citando

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 Introducción.
MySQL se puede enlazar con el uso de ODBC, pero parece más cómodo, el uso del mismo sistema basado en los objetos de conexión. Estos están desarrollados y se pueden descargar de la página de SUN. Igualmente podemos descargar de la misma página el gestor de la base de datos, es decir MySQL y herramientas gráficas de administración.

1.3 Objetos necesarios.
La base de datos,

    mysql-noinstall-5.1.33-win32

Los objetos de conexión para Visual Studio NET,
    mysql-connector-net-5.x.x

Por comodidad la herramienta de administración 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 versión con instalador.

1.4 Utilización.
Instalar el gestor de MySQL, se compone de distintos elementos, que cumplen con las necesidades de administración desde la línea de comandos. El comando de inicio del gestor es
Código:
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 ejecutándose 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 sería el de inicio.

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


Y el de parada
Código:
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 parámetros son los mínimos imprescindibles, a medida que se domina la herramienta, se deberán incluir más parámetros para su correcta utilización.
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 librería, espacio de nombres, como deseemos llamarlo, de MySQL.
Deberemos saber donde hemos instalado dicha utilidad de SUN para su localización.
Para ello hay que acudir a Proyecto-Agregar referencia.
Y en la ventana


Pinchar en examinar hasta llegar a su ubicación, que por defecto es la que vemos.
Una vez seleccionada ya veremos como esta incluida la referencia en la pestaña 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 mínima.
Antes de eso hay que configurar la conexión a la base de datos con el objeto Connection.
El nombre de la base de datos se supone declarado a nivel de módulo, la ruta será dentro del directorio de datos de MySQL, por defecto.

Código:
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 conexión 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 opción de entre varias posibles.
Hay que tener presente que la conexión es donde más cambios vamos a encontrar siempre.

Después vamos a necesitar un objeto del tipo Command que será el que realizará la tarea.
Código:
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 & _
               "conexión 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 mínima para crear una base de datos.
Código:
Dim CadenaSQL As String = "CREATE DATABASE " & NombreBaseDatos & ";"


Como no hay que esperar datos devueltos el objeto a utilizar para su creación es un objeto Command.
Código:
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 creación de la base de datos.
Código:
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 conexión se configura en el mismo procedimiento.


También podemos hacerlo desde la herramienta gráfica de administración, pulsando en la zona de bases de datos y con el botón derecho del ratón seleccionar Create New Schema.


Respondemos OK y la base quedará creada.

1.7 Creamos las tablas.
Con la misma filosofía se puede proceder a crear la tablas de la base de datos. La sintaxis mínima puede ser esta.
Código:
"CREATE TABLE IF NOT EXISTS Tipo_Socio " & _
  "( " & _
  "Codigo VARCHAR(2) PRIMARY KEY," & _
  "Denominacion VARCHAR(12) " & _
  ")"


Solo hay que ceñirse a la sintaxis de SQL.

Un ejemplo algo más complejo
Código:
"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 código puede ser el que sigue:
Código:
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 código que se ejecutará se produzca o no un error
   Finally
     Comando = Nothing ' lo eliminamos de la memoria
  End Try
End Sub


La creación de la tabla se basa en el mismo sistema que antes, el uso de un objeto command.
El objeto connection se supone ya configurado.
Código:
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 parámetros un objeto Connection, un objeto Command, que se podría crear en el mismo procedimiento, no es imprescindible, y la instrucción SQL con la descripción de la tabla.
Código:
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 aplicación es cómodo, después no tiene sentido.
Código:
' 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 podría ser algo así.
Código:
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 opción del programa de administración del entorno gráfico que es comodo.
Para ello arrancamos el programa MySQLAdministrator y pulsamos en el botón de Create Table.

La ventana del programa es esta.


Seleccionamos en la lista de la izquierda la base de datos que deseamos utilizar y después pulsamos Create Table.

La ventana de creación de una tabla es la que vemos y solo hay que ir añadiendo los campos e ir jugando con las pestañas de opciones en función de las necesidades de cada campo.


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


Y el resultado es la adición 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.
Habría que seleccionar con el botón derecho en la tabla la opción de editar tabla, para volver a la misma ventana de antes y en la pestaña 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 también podemos editar los datos de las tablas para comprobar el correcto funcionamiento de nuestros programas, seleccionando la tabla con el botón derecho del ratón la opción de Edit Table Data.
Disponemos de más opciones es cuestión 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 filosofía que con SQLServer o Access, salvando las diferencias que podamos encontrar en la sintaxis de SQL.


La utilización 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.
Código:
Dim ObjSQL As MySqlConnection

Que siempre es más cómodo.



Autor: casiopea


Normas del foro
Aprende a postear correctamente usando las etiquetas

Ultima edición por Tesis el Jueves 03 Nov 2011 13:07; editado 2 veces
Volver arriba
Ver perfil del usuario Enviar mensaje privado
pikamorfo



Registrado: 13 Ago 2009
Mensajes: 4

Mensaje Publicado: Viernes 14 Ago 2009 15:54

Título del mensaje: Re: COMO CONECTAR VB.NET CON MYSQL

Responder citando

Gracias por el doc Guiño solo queria saber una cosa a la hora de crear el .exe con el proyecto elaborado .. el usuario normal como accede a la base de datos..?

tiene que tener la bd guardada , o el mysql intalado ..?

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Tesis
Administrador


Registrado: 04 Mar 2007
Mensajes: 2975
Ubicación: Valencia - España

Mensaje Publicado: Domingo 16 Ago 2009 19:48

Título del mensaje: Re: COMO CONECTAR VB.NET CON MYSQL

Responder citando

A la base de datos se accede gracias a la cadena de conexión. Si la BD está en local en tu PC el usuario no podrá acceder si no es por mediación de tu IP.

Lo mejor (si es para una aplicación seria es que contrates un servidor que ofrezca los servicios de MySql, que creo que son la mayoría)

Yo haría la conexión desde un formulario y así siempre se pueden modificar los campos.



Espero que te sirva.
Saludos.


Normas del foro
Aprende a postear correctamente usando las etiquetas
Volver arriba
Ver perfil del usuario Enviar mensaje privado
pikamorfo



Registrado: 13 Ago 2009
Mensajes: 4

Mensaje Publicado: Lunes 17 Ago 2009 18:19

Título del mensaje: Re: COMO CONECTAR VB.NET CON MYSQL

Responder citando

yo quiero q el archivo de la bd lo pueda manejar cada persona individualmente osea de tener una base de datos en la aplicacion incorporada..

creo q lo mejor es q como esto de mysql esta exo asi para host - cliente , es mejor q me pase a otro tipo de SGBD para que el usuario conecte sin un host remoto no?..

de todas formas ... conoces algun host que proporcione servidor gratuito de mysql? en las paginas webs si proporcionan esto .. pero no se si servira realmente..

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Tesis
Administrador


Registrado: 04 Mar 2007
Mensajes: 2975
Ubicación: Valencia - España

Mensaje Publicado: Lunes 17 Ago 2009 18:32

Título del mensaje: Re: COMO CONECTAR VB.NET CON MYSQL

Responder citando

Mira a ver si te sirve este host:


Normas del foro
Aprende a postear correctamente usando las etiquetas
Volver arriba
Ver perfil del usuario Enviar mensaje privado
Ricardo Guzman Cisneros



Registrado: 03 Mar 2010
Mensajes: 9

Mensaje Publicado: Domingo 07 Mar 2010 17:24

Título del mensaje: Re: COMO CONECTAR VB.NET CON MYSQL

Responder citando

Hola a todos

Quisiera su apoyo para poder saber como realizar la carga de archivos *.txt desde mi pc en Visual Basic para MySQL, y tambien crear 2 tablas despues de realizar dicha carga

Saludos.

RGC Ordenador

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Tesis
Administrador


Registrado: 04 Mar 2007
Mensajes: 2975
Ubicación: Valencia - España

Mensaje Publicado: Domingo 07 Mar 2010 20:31

Título del mensaje: Re: COMO CONECTAR VB.NET CON MYSQL

Responder citando

Mira este enlace: http://www.foro.lospillaos.es/curso-gratuito-de-programacion-en-vb-studio-net-vt4212.html
Revisa a partir del tema 1.37, de esta manera aprenderás a tratar archivos. Una vez aprendido, hacemos la conexión a MySQL y le enviamos los datos.


Saludos.


Normas del foro
Aprende a postear correctamente usando las etiquetas
Volver arriba
Ver perfil del usuario Enviar mensaje privado
dito9



Registrado: 11 Jun 2011
Mensajes: 4

Mensaje Publicado: Sábado 11 Jun 2011 22:30

Título del mensaje: Re: COMO CONECTAR VB.NET CON MYSQL

Responder citando

Hola tesis.

Soy un Estudiante de Ing. Informatica y tengo un proyecto (es un pequeño juego de video en plataforma kodu). Utilize Visual Basic. Net para hacer la interfaz del usuario para que pueda acceder a los niveles, ver su puntaje, etc.
Ahora el problema surge en que esta parte del curso me piden conectar mi proyecto con una base de datos MySQL alojada en sourceforge.net ,espero que hallas oido hablar de esa pagina, Quisiera que me ayudes porfavor. Porque la verdad no se como hacerlo.
en sourceforge ya esta creada la pagina web del proyecto y la base de datos en MySQL. Es 1 base con 4 tablas (nombre,apellido,correo,puntaje).
Para que me entiendas mejor.... quiero conectar a la base de datos para que se creen "usuarios" guardar sus puntajes y hacer un ranking. =)
Muchas gracias de Antemano espero me puedas ayudar Risa

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

Cómo una variable puede indicar qué function usar?

Tachikomaia Programación en general 3 Viernes 22 Ago 2014 14:17 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Os muestro en un video como hacer un curriculum...

P3p3 Temas generales 0 Lunes 18 Ago 2014 11:00 Ver último mensaje
El foro no contiene ningún mensaje nuevo

MySQL y su autocommit

RompePC PHP 4 Jueves 14 Ago 2014 11:43 Ver último mensaje
El foro no contiene ningún mensaje nuevo

programacion en visual basic 2010

wilber alvarado Visual Basic y VBA 0 Martes 22 Jul 2014 17:14 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Cómo pongo código bien en blogspot?

Tachikomaia Temas generales 1 Martes 22 Jul 2014 07:10 Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,