Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: ReViJa en 4 Junio 2008, 21:15 PM

Título: Conexión con Visual Basic 6.0 y MySql
Publicado por: ReViJa en 4 Junio 2008, 21:15 PM
[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 (http://dev.mysql.com/downloads/connector/odbc/3.51.html)

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:

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.