Conexión con Visual Basic 6.0 y MySql

Iniciado por ReViJa, 4 Junio 2008, 21:15 PM

0 Miembros y 1 Visitante están viendo este tema.

ReViJa

[size=18]COMO CONECTAR VISUAL BASIC CON MySQL[/size]

Hola, quería compartir con vosotros esta pequeña introducción de como conectar vb con mysql.

Empezamos!!!

Lo primero que necesitamos es el driver para la conexión (MySQL Connector/ODBC 3.51) que lo descargaremos de AQUI

Lo siguiente es agregar las referencias necesarias para nuestro proyecto.

Abrimos Visual Basic > Nuevo proyecto > EXE estándar > picamos en proyecto > referencias.

Se abrirá una ventana y seleccionaremos estas dos referencias:

    1.   Microsoft DAO 3.51 Object Library 
    2.   Microsoft ActiveX Data Objects 2.0 Library
    [/list]

    Una vez agregadas las referencias pulsamos aceptar.

    En el formulario añadimos 5 TextBox y 2 commandButton
    Esta va ha ser una versión simple para ver como conecta con MySQL y trata los datos, después de vuestra parte esta hacerlo mas complejo. (los nombres de los textbox y de los commandbutton son los da el programa por defecto)

    Usaremos los campos de texto en este orden:

      Text1 > puerto (
    3306)
    Text2 > nombre (nombre de usuario)*
    Text3 > contraseña (contraseña del usuario)
    Text4 > nombre de la base de datos (nombre de la base de datos)
    Text5 > servidor (DNS del servidor)
    Command1 > conectar
    Command2 > visualizar[/list]

    NOTA: El usuario tiene que estar creado en tu servidor, así que créalo y asígnale los permisos pertinentes (por lo menos lectura)
    También tienes que tener en cuenta el Administrador de acceso MySQL remoto (si tienes dudas agrega un % ), no es seguro pero para hacer alguna prueba no creo que tengas que preocuparte en exceso.

    Declaramos las variables:

    Public BD As ADODB.Connection
    Public RecSQL As ADODB.Recordset


    Contenido del command1 (conectar con la base de datos)

    Private Sub Command1_Click()
    On Error GoTo Ver

    Set BD = New ADODB.Connection
    BD.ConnectionString = "driver={MySQL ODBC 3.51 Driver};" & _
    "Server=" & Text1 & ";" & _
    "Port=" & Text2 & ";" & _
    "Database=" & Text3 & ";" & _
    "User=" & Text4 & ";" & _
    "Password=" & Text5 & ";" & _
    "Option=3;"

    BD.Open

    MsgBox "Conexión establecida!!!", vbExclamation, "Conexión"

    Exit Sub
    Ver:
    MsgBox "Nº de error: " & Err.Number & " | " & Err.Description, vbCritical, "Control de errores"
    Err.Clear
    End Sub


    Una vez la conexión se ha establecido nos queda ver los datos, así que vamos a ello.

    Contenido del command2 (recorrer la base de datos)

    Private Sub Command1_Click ()
    On Error GoTo Ver

    Set RecBD = New ADODB.Recordset
    RecBD.Open "select * from datos", BD, adOpenStatic, adLockOptimistic

    While Not RecBD.EOF
      MsgBox "Su ID: " & RecBD.Fields(0) & " | " & " y su nombre " & RecBD.Fields(1), , "Información..."
      RecBD.MoveNext
    Wend

    Exit Sub
    Ver:
    MsgBox "Nº de error: " & Err.Number & " | " & Err.Description, vbCritical, "Control de errores"
    Err.Clear
    End Sub


    El sistema es muy similar a Access y la verdad es que es muy intuitivo.

    Añadiendo registros:
    Hay dos formas para añadir registros (una más correcta y rápida que la otra)

    Esta es la menos correcta:

    Set RecSQL = New ADODB.Recordset
    RecSQL.Open "select * from datos", BD, adOpenStatic, adLockOptimistic

    RecSQL.AddNew
    RecSQL.Fields(1).Value = Text1
    RecSQL.Fields(2).Value = Text2
    RecSQL.Update

    RecSQL.Close
    Set RecSQL = Nothing


    Esta es la más correcta:

    Set RecSQL = New ADODB.Recordset

    RecSQL.Open "INSERT INTO datos (id,nombre) VALUES (" & val(Text1) & ",'" & Text2 & "')", BD, adOpenStatic, adLockOptimistic

    Set RecSQL = Nothing



    Como modificar registros:

    Set RecSQL = New ADODB.Recordset

    RecSQL.Open "UPDATE datos SET id=" & val(Text1) & " , nombre='" & Text2 & "' WHERE id =" & 1 , BD, adOpenStatic, adLockOptimistic

    Set RecSQL = Nothing


    Eliminando registros:
    Hay dos maneras de hacer esta operación (una mas correcta que otra, pero la tenéis que descubrir jejejejeje)

    Esta es la primera:

    Set RecSQL = New ADODB.Recordset

    RecSQL.Open "SELECT * FROM datos WHERE id =" & Val(Text1), BD, adOpenStatic, adLockOptimistic

    RecSQL.Delete
    Set RecSQL = Nothing


    O se puede hacer la búsqueda con LIKE:

    Set RecSQL = New ADODB.Recordset
         
    RecSQL.Open "SELECT * FROM datos WHERE nombre LIKE '" & Text2 & "'", BD, adOpenStatic, adLockOptimistic
         
    RecSQL.Delete
    Set RecSQL = Nothing


    Esta es la otra:

    Set RecSQL = New ADODB.Recordset

    RecSQL.Open "DELETE FROM contactos WHERE id=" & Val(Text1), BD, adOpenStatic, adLockOptimistic

    Set RecSQL = Nothing



    Como trata las fechas MySQL?
    El formato predefinido es AAAA-MM-DD
    ¿y como lo tratamos desde Visual Basic?,es bastante sencillo, lo vemos...

    Esta es una consulta de un campo fecha:

    Set RecSQL = New ADODB.Recordset

    RecSQL.Open "SELECT * FROM tabla WHERE Campo_fecha='" & Format(Text2, "yyyy-mm-dd") & "'", BD, adOpenStatic, adLockOptimistic



    Esta es una consulta de un rango de fechas:

    Set RecSQL = New ADODB.Recordset

    RecSQL.Open "SELECT * FROM tabla WHERE Campo_fecha BETWEEN '" & Format(Text1, "yyyy-mm-dd") & "' AND '" & Format(Text2, "yyyy-mm-dd") & "'", BD, adOpenStatic, adLockOptimistic



    Espero que sirva de ayuda.
    Fuente original: http://www.foro.lospillaos.es/viewtopic.php?t=2660

    Saludos.