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:
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 (
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:
Código:
Public BD As ADODB.Connection
Public RecSQL As ADODB.Recordset
Contenido del command1 (conectar con la base de datos)
Código:
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)
Código:
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:
Código:
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:
Código:
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:
Código:
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:
Código:
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:
Código:
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:
Código:
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:
Código:
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:
Código:
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.