7/22/2019 Conectar Vb Con Mysql
1/15
LUNES, FEBRERO 21 , 2011
VB 6.0 - MYSQL CON PROCEDIMIENTOS ALMACENADOS ENVISUAL BASIC 6.0.10:52 A.M. HENRY JOE WONG URQUIZA 14 COMENTARIOS
"Si u sa algn cdigo d el siguiente tutorial , den el icono de ME GUSTA del Faceboo k que se encu entra en su
mano derecha, para que se vu elva Seguidor del Blo g y tambin c omentenos que tal les pareci el tutor ial"
1 . ENTORNO
Visual Basic 6.0.
MySQL 5.0.
2 . INTRODUCCIN
Visual Basic es un lenguaje de programacin orientado a eventos, desarrollado por el alemn Alan Cooper para
Microsoft. Este lenguaje de programacin es un dialecto de BASIC, con importantes agregados. Su primera versin fue
presentada en 1991, con la intencin de simplificar la programacin utilizando un ambiente de desarrollo completamente
grfico que facilitara la creacin de interfaces grficas y, en cierta medida, tambin la programacin misma. Y el siguiente
tutorial podran ver un ejemplo de como comunicar Visual Basic 6.0 con una base de datos MySQL 5.0 que tiene
procedimientos almacenados. Desarrollaremos un ejemplo de mantenimiento a una tabla que espero les sea de su
utilidad.
3 . DESARROLLO
3.1. Driver
Primero debemos de instalar el Driver de MySQL para que se pueda comunicar Visual Basic 6.0 con MySQL 5.0 para
eso lo descargamos del siguienteLINK
3.2. Creando Base de Datos con MySQL
A continuacin les paso el script para crear la base y la tabla que vamos a usar en el ejemplo
--
http://www.programandoconcafe.com/2011/02/vb-60-mysql-con-procedimientos.htmlhttp://www.programandoconcafe.com/2011/02/vb-60-mysql-con-procedimientos.htmlhttp://www.blogger.com/comment.g?blogID=22625355&postID=2646468795145829839http://www.blogger.com/comment.g?blogID=22625355&postID=2646468795145829839http://dl.dropbox.com/u/8439638/conectorMySQLVB60.rarhttp://dl.dropbox.com/u/8439638/conectorMySQLVB60.rarhttp://dl.dropbox.com/u/8439638/conectorMySQLVB60.rarhttp://dl.dropbox.com/u/8439638/conectorMySQLVB60.rarhttp://www.blogger.com/comment.g?blogID=22625355&postID=2646468795145829839http://www.programandoconcafe.com/2011/02/vb-60-mysql-con-procedimientos.htmlhttp://www.programandoconcafe.com/2011/02/vb-60-mysql-con-procedimientos.html7/22/2019 Conectar Vb Con Mysql
2/15
-- Creando la base de datos
--
CREATEDATABASEIFNOTEXISTSbdblog;
--
-- Usando la base de datos
--
USEbdblog;
---- Creando la tabla
--
DROPTABLEIFEXISTS`visitante`;
CREATETABLE`visitante` (
`codigo` int(11) NOTNULLAUTO_INCREMENT,
`nombre` varchar(50) NOTNULL,
`fechaNacimiento` datetimeNOTNULL,
`peso` decimal(18,2) NOTNULL,
PRIMARYKEY(`codigo`)
) ENGINE=InnoDB DEFAULTCHARSET=latin1;
3.3. Creando los procedimiento
El script de los procedimientos almacenados que vamos a usar
-- Insertar Visitante
DELIMITER $$
DROPPROCEDUREIFEXISTS`spI_visitante` $$
CREATEDEFINER=`root`@`localhost` PROCEDURE`spI_visitante`(
_codigo int,
_nombre varchar(50) ,
_fechaNacimiento datetime,
_peso decimal(18, 2)
)
BEGIN
SELECTIFNULL(MAX(codigo),0)+1 into_codigo FROM`visitante`;
INSERTINTO`visitante`(
`codigo`,
`nombre`,
`fechaNacimiento`,
`peso`
)
VALUES(
_codigo,
_nombre,
_fechaNacimiento,
_peso
7/22/2019 Conectar Vb Con Mysql
3/15
);
END$$
DELIMITER ;
-- Actualizar Visitante
DELIMITER $$
DROPPROCEDUREIFEXISTS`spU_visitante` $$
CREATEDEFINER=`root`@`localhost` PROCEDURE`spU_visitante`(
_codigo int,
_nombre varchar(50) ,
_fechaNacimiento datetime,
_peso decimal(18, 2)
)
BEGIN
UPDATEvisitante
SET
`nombre` = _nombre,
`fechaNacimiento` = _fechaNacimiento,
`peso` = _peso
WHERE
`codigo` = _codigo
;
END$$
DELIMITER ;
-- Mostrar todos los Visitante
DELIMITER $$
DROPPROCEDUREIFEXISTS`spF_visitante_all` $$
CREATEDEFINER=`root`@`localhost` PROCEDURE`spF_visitante_all`(
)
BEGIN
selectcodigo, nombre, fechaNacimiento, peso fromvisitante orderbynombre;
END$$
DELIMITER ;
3.4. Creando el proyecto en Visual Basic 6.0.
Debemos de crear un proyecto en Visual Basic 6.0 y luego diseamos el siguiente formulario
7/22/2019 Conectar Vb Con Mysql
4/15
Y las referencias del proyecto deberian ser las siguientes:
http://4.bp.blogspot.com/-Cbqgm7QdaeU/TWJ7ujZYL5I/AAAAAAAAAOo/Pn2ves3-Gbw/s1600/Dibujo.JPG7/22/2019 Conectar Vb Con Mysql
5/15
3.4.1. Mtodos de soporte
Dentro del formulario vamos a crear unos mtodos que den soporte a nuestro formulario. Como el evento limpiar, que
limpia todos los textbox o el mtodo habilitar que habilita los controles.
OptionExplicit
'Para saber si es un nuevo registro
Dimnuevo AsBoolean
'Para saber si vamos a modificar
Dimmodificar AsBoolean
'Habilita los controles que son textbox, combobox, dtpicker
PrivateSubhabilitar(ByValblnEstado AsBoolean)
http://2.bp.blogspot.com/-ccM5BAT6duQ/TWJ-WU5iw3I/AAAAAAAAAOs/XgkytefRfGY/s1600/Referencias.jpg7/22/2019 Conectar Vb Con Mysql
6/15
Dimcrl AsControl
ForEachcrl In Me.Controls
IfTypeOf crl IsTextBox OrTypeOf crl IsComboBox OrTypeOf crl IsDTPicker Then
crl.Enabled = blnEstado
EndIf
Next
EndSub
'Limpia las cajas de textoPrivateSublimpiar()
Dimcrl AsControl
ForEachcrl In Me.Controls
IfTypeOf crl IsTextBox Then
crl.Text = ""
EndIf
Next
EndSub
'Habilita o deshabilita los botones
PrivateSubbotones()Ifnuevo = TrueOrmodificar = TrueThen
habilitar True
btnNuevo.Enabled = False
btnGuardar.Enabled = True
btnModificar.Enabled = False
btnCancelar.Enabled = True
Else
habilitar False
btnNuevo.Enabled = True
btnGuardar.Enabled = False
btnModificar.Enabled = True
btnCancelar.Enabled = False
EndIf
EndSub
'Cargamos los metodos en el load
PrivateSubForm_Load()
nuevo = False
modificar = False
habilitar False
botones
'Este metodo lo implementamos despues
llenarListView
EndSub
3.4.2. Mtodo Conectar
El siguiente mtodo nos permite conectarnos a la base de datos que esta en MySQL desde Visual Basic 6.0.
PublicFunctionConectar() AsADODB.Connection
Dimcon AsADODB.Connection
7/22/2019 Conectar Vb Con Mysql
7/15
Setcon = NewADODB.Connection
con.CursorLocation = adUseClient
con.Open"DRIVER={MySQL ODBC 3.51 Driver};"_
& "SERVER=localhost;"_
& "DATABASE=bdblog;"_
& "UID=root;PWD=clave;PORT=3306;OPTION=131072"
SetConectar = con
EndFunction
3.4.3. Mtodo llenar listView
PrivateSubllenarListView()
WithlvwVisitante
.Refresh
.ListItems.Clear
EndWith
Dimsqlcon AsADODB.Connection
Setsqlcon = Me.Conectar
Dimsqlrec AsNewADODB.Recordset
sqlrec.Open"call spF_visitante_all()", sqlcon, adOpenStatic, adLockOptimistic
DimItem AsListItem
WhileNotsqlrec.EOF
SetItem = lvwVisitante.ListItems.Add(, , sqlrec!nombre)
Item.Tag = sqlrec!nombre
Item.SubItems(1) = VBA.Format$(sqlrec!fechaNacimiento, "dd-MM-yyyy")
Item.SubItems(2) = "" & sqlrec!peso
Item.SubItems(3) = "" & sqlrec!Codigo
sqlrec.MoveNext
Wend
lvwVisitante.Refresh
sqlrec.Close
sqlcon.Close
Setsqlrec = Nothing
Setsqlcon = Nothing
EndSub
3.4.4. Mtodo para insertar un visitante
Este mtodo sirve para insertar un visitante a nuestra base de datos y llama al procedimiento almacenado "spI_Visitante"
PublicFunctioninsertarvisitante() AsBoolean
OnErrorGoToProblemas
Dimrpta AsBoolean' Variables que nos indicar si se inserto el Registro
rpta = False
Dimsqlcon AsADODB.Connection ' Variable que sirve para establecer la conexion con
MySQL
Setsqlcon = Me.Conectar
7/22/2019 Conectar Vb Con Mysql
8/15
Dimsqlcmd AsNewADODB.Command ' El comando que vamos a ejecutar --> Insertar un
registro a la tabla visitante
Withsqlcmd
.CommandText = "call spI_visitante("& _
"?,"& _
"?,"& _
"?,"& _
"?"& _")"
.ActiveConnection = sqlcon ' Establecemos la conexion al comando
.CommandType = adCmdText ' Va a ejecutar un Store Procedure
.Prepared = True' La sentencia esta prepara para ejecutarse
EndWith
'Parametros que tendra el procedimiento almacenado spI_visitante
Dimparamcodigo AsNewADODB.Parameter
Dimparamnombre AsNewADODB.Parameter
DimparamfechaNacimiento AsNewADODB.Parameter
Dimparampeso AsNewADODB.Parameter'Establecemos los valores para los parametros del procedimiento almacenado
spI_visitante
Withparamcodigo
.Name = "_codigo"
.Size = 0
.Direction = adParamInput
.Type= adInteger
.Value = 0
EndWith
Withparamnombre
.Name = "_nombre"
.Size = 50
.Direction = adParamInput
.Type= adVarChar
.Value = UCase(Me.txtNombre.Text)
EndWith
WithparamfechaNacimiento
.Name = "_fechaNacimiento"
.Size = 0
.Direction = adParamInput
.Type= adDate
.Value = Me.dtpFechaNacimiento.Value
EndWith
Withparampeso
.Name = "_peso"
.Size = 0
.Direction = adParamInput
.Type= adDecimal
.Precision = 18
.NumericScale = 2
7/22/2019 Conectar Vb Con Mysql
9/15
.Value = Me.txtPeso.Text
EndWith
'Agregamos los parametros al comando
sqlcmd.Parameters.Append paramcodigo
sqlcmd.Parameters.Append paramnombre
sqlcmd.Parameters.Append paramfechaNacimiento
sqlcmd.Parameters.Append parampeso
'Ejecutamos el procedimientosqlcmd.Execute
'Limpiamos los recursos
Setsqlcmd = Nothing
sqlcon.Close
Setsqlcon = Nothing
insertarvisitante = True
ExitFunction
Problemas:
insertarvisitante = False
ExitFunctionEndFunction
3.4.5. Mtodo para actualizar un visitante
Este mtodo sirve para actualizar un visitante a nuestra base de datos y llama al procedimiento almacenado
"spU_Visitante"
PublicFunctionactualizarvisitante() AsBoolean
OnErrorGoToProblemas
Dimrpta AsBoolean' Variables que nos indicar si se actualizo el Registro
rpta = False
Dimsqlcon AsADODB.Connection ' Variable que sirve para establecer la conexion con
MySQL
Setsqlcon = Me.Conectar
Dimsqlcmd AsNewADODB.Command ' El comando que vamos a ejecutar --> Actualizar un
registro a la tabla visitante
Withsqlcmd
.CommandText = "call spU_visitante("& _
"?,"& _
"?,"& _
"?,"& _
"?"& _
")"
.ActiveConnection = sqlcon ' Establecemos la conexion al comando
.CommandType = adCmdText ' Va a ejecutar un Store Procedure
.Prepared = True' La sentencia esta prepara para ejecutarse
EndWith
'Parametros que tendra el procedimiento almacenado spI_visitante
Dimparamcodigo AsNewADODB.Parameter
Dimparamnombre AsNewADODB.Parameter
7/22/2019 Conectar Vb Con Mysql
10/15
DimparamfechaNacimiento AsNewADODB.Parameter
Dimparampeso AsNewADODB.Parameter
'Establecemos los valores para los parametros del procedimiento almacenado
spI_visitante
Withparamcodigo
.Name = "_codigo"
.Size = 0
.Direction = adParamInput
.Type= adInteger
.Value = Me.lblCodigo.Caption
EndWith
Withparamnombre
.Name = "_nombre"
.Size = 50
.Direction = adParamInput
.Type= adVarChar
.Value = UCase(Me.txtNombre.Text)
EndWithWithparamfechaNacimiento
.Name = "_fechaNacimiento"
.Size = 0
.Direction = adParamInput
.Type= adDate
.Value = Me.dtpFechaNacimiento.Value
EndWith
Withparampeso
.Name = "_peso"
.Size = 0
.Direction = adParamInput
.Type= adDecimal
.Precision = 18
.NumericScale = 2
.Value = Me.txtPeso.Text
EndWith
'Agregamos los parametros al comando
sqlcmd.Parameters.Append paramcodigo
sqlcmd.Parameters.Append paramnombre
sqlcmd.Parameters.Append paramfechaNacimiento
sqlcmd.Parameters.Append parampeso
'Ejecutamos el procedimiento
sqlcmd.Execute
'Limpiamos los recursos
Setsqlcmd = Nothing
sqlcon.Close
Setsqlcon = Nothing
actualizarvisitante = True
ExitFunction
Problemas:
7/22/2019 Conectar Vb Con Mysql
11/15
actualizarvisitante = False
ExitFunction
EndFunction
3.4.6. Eventos de los controles del formulario
A continuacin les mostraremos los eventos de los botones del formulario y del evento double clic del listview
'Evento clic del boton cancelar
PrivateSubbtnCancelar_Click()
nuevo = False
modificar = False
botones
limpiar
Me.lblCodigo.Caption = ""
EndSub
'Evento clic del boton guardar
PrivateSubbtnGuardar_Click()
Dimrespuesta AsInteger
Dimrpta AsBoolean
rpta = False
Ifnuevo = TrueThen
rpta = Me.insertarvisitante
Else
respuesta = MsgBox("Desea guardar los cambios realizados", 52, "MENSAJE")
Ifrespuesta = vbYes Then
rpta = Me.actualizarvisitante
EndIf
EndIf
Ifrpta = TrueThen
Dimmen AsString
men = "Se "
Ifnuevo = TrueThen
men = men + "registro "
Else
men = men + "actualizo "
EndIf
men = men + "de forma correcta al Visitante"
MsgBox men, vbDefaultButton1, "MENSAJE"
Else
MsgBox "No se realizo el proceso correctamente", vbCritical, "ERROR"
EndIf
nuevo = False
modificar = False
botones
limpiar
llenarListView
7/22/2019 Conectar Vb Con Mysql
12/15
Me.lblCodigo.Caption = ""
EndSub
'Evento clic del boton modificar
PrivateSubbtnModificar_Click()
IflblCodigo.Caption "" Then
modificar = True
botonesElse
MsgBox "Debe de buscar un dato para modificar", vbCritical, "ERROR"
EndIf
EndSub
PrivateSubbtnNuevo_Click()
nuevo = True
modificar = False
botones
limpiarMe.txtNombre.SetFocus
Me.lblCodigo.Caption = ""
EndSub
'Evento double clic del lisview
PrivateSublvwVisitante_DblClick()
OnErrorGoToProblemas
IflvwVisitante.ListItems.Count = 0 ThenExitSub
IflvwVisitante.SelectedItem IsNothingThenExitSub
Me.txtNombre.Text = lvwVisitante.SelectedItem.Tag
Me.dtpFechaNacimiento.Value = lvwVisitante.SelectedItem.SubItems(1)
Me.txtPeso.Text = lvwVisitante.SelectedItem.SubItems(2)
Me.lblCodigo.Caption = lvwVisitante.SelectedItem.SubItems(3)
ExitSub
Problemas:
MsgBox "Debe de seleccionar un Visitante", vbCritical, "ERROR"
ExitSub
EndSub
Acontinuacincrea unformulariocon lassiguientesdescripciones
7/22/2019 Conectar Vb Con Mysql
13/15
Algo asi, muuy senci llo, ahora bien..Nos vamos al ambiente de programacion del formulario
y antes del Form_Load Escribiremos declararemos los siguientes objetos DimconnAsNewADODB.ConnectionDimrsAsNewADODB.Recordset
Adentro del Form_Load Escribiremos lo siguiente
7/22/2019 Conectar Vb Con Mysql
14/15
Private SubForm_Load()conn.Open "driver={mysql odbc 3.51 driver};" _
& "user=administrador;" _& "password=123;" _& "server=localhost;" _& "database=midb;"
rs.Open "select * from mitabla", conn, adOpenStatic, adLockOptimisticText1.Text = rs.Fields("nombre")Text2.Text = rs.Fields("apellido")Text3.Text = rs.Fields("cedula")Text4.Text = rs.Fields("email")Text5.Text = rs.Fields("pais")End Sub
El codigo seria algo asi.
Hablemos un poco de este codigo, conn sera el q nos permita la conexion de la base de datos, debemos especificar el nombrede usuario, la clave, el nombre del servidor, y la base de datos. rs sera nuestro recordset, el que nos permitira realizar cualquier cosa con los registros, eliminar, nuevo, guardar, buscar, etc..
7/22/2019 Conectar Vb Con Mysql
15/15
con la instruccin "selectr * from mitabla" hacemos un llamado a la tabla de la base de datos midb, pudieran existir mastablas en esa base de datos y con esa instruccion especificamos cual es la tabla con la que vamos a trabajar. en estecaso mitabla.Finalmente, pasamos los registros que estan en nuestra base de datos, a las cajas de texto respecticamente.. si ejecutamos la aplicacin nos daremos cuenta de que nos muestra los registros o el registro q creamos anteriormente.
Ahora programemos nuestros botones de nuevo y guardar.en el boton de guardar escribiremos:
Private SubCommand1_Click()rs.AddNewText1.Text = ""Text2.Text = ""Text3.Text = ""Text4.Text = ""Text5.Text = ""End Sub
en el de guardar escribiremos:
Private SubCommand2_Click()
rs.Fields("nombre") = Text1.Textrs.Fields("apellido") = Text2.Textrs.Fields("cedula") = Text3.Textrs.Fields("email") = Text4.Textrs.Fields("pais") = Text5.Textrs.Update
Text1.Text = ""Text2.Text = ""Text3.Text = ""Text4.Text = ""Text5.Text = ""
MsgBox "Tus registros han sigo duardados en " _& Chr(10) & "tu base de datos midb (MYSQL)" _& Chr(10) & Chr(10) & "Cool.."
End Sub
y para verificar que tu registro se guardo, entra a SQLyog y verifica que realmente tus registros estan hay.
Top Related