Pregunta:
¿Cómo puedo mandar datos de un programa hecho en Visual Basic 6.0 a una base de datos hecha en MySQL 5.0?
XDmorrillo
2009-04-08 21:28:24 UTC
Gracias de antemano
Que Dios los bendiga
Tres respuestas:
mares_rosas
2009-04-08 22:52:30 UTC
Primero que nada te voy ha enseñar las diferentes formas de mandar datos:



1. Objetos ADO.



Cuando inicie el visual Basic 6.0, te sale automaticamente una ventana que dice "Nuevo", busca proyecto de datos, y le das un nombre cualquiera, ok. Una vez realizando eso, te visualiza una forma llamada "frmDataEnv" y una carpeta llamada "Diseñadores".



Nos situamos en la forma, y le damos doble click,



Cadena de conexión

Bien, ahora que hemos configurado MySQL y Visual Basic, podemos escribir la aplicación. Primero, verifiquemos la cadena de conexión, la cual determina como se conectará Visual Basic con el servidor, especifica el controlador ODBC (MyODBC), la dirección IP del servidor, nombre de usuario, contraseña y el nombre de la base de datos. También se adicionan opciones especgficas de conexión. La siguiente es la cadena de conexión que utilizo en mi aplicación (todo en una misma línea).





DRIVER={MySQL ODBC 3.51 Driver}; SERVER=123.456.789.100; DATABASE=mysqldatabase;

UID=sampleuser; PWD=12345; OPTION=16427



para tu caso



DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=tubasededatos;

UID=root; PWD='';



Los valores UID y PWD se toman desde una ventana de ingreso y validación de usuarios, y se procesan para completar la cadena de conexión que se almacena dentro de un módulo como variable global. Las opciones que se incluyen son las siguientes:



Opción Descripción

1 - El cliente no puede obtener el tamaño real del campo.

2 - MySQL devuelve el valor de los registros encontrados.

8 - Se permiten valores grandes. Nosotros queremos el servidor para mandar los valores BLOB a nuestro cliente de VB (paquetes grandes).

32 - Soporta el cursor dinámico.

16384 - Convierte campos LONGINT a INT.



Las opciones 1, 2 y 32 son tomadas del ejemplo de ADO que se encuentra en el website de Mysql, específicamente en esta sección.



Objeto de conexión

Ahora que tenemos la cadena de conexión, nos podemos conectar a la base de datos. A continuación se puede apreciar como se ejecuta la misma:





Dim conn As ADODB.Connection

Set conn = New ADODB.Connection

conn.ConnectionString = GloConnectionString

conn.CursorLocation = adUseClient

conn.Open



En la primera linea hemos creado en memoria la conexión ADODB y en la segunda se le asigna la instancia. La sintaxis alternativa sería:



Dim conn As New ADODB.Connection





Pero esta opción reduce la velocidad de acceso y no es recomendable. En la cuarta línea hemos asignado la localización del cursor del lado del cliente, lo que ayuda a prevenir errores y problemas que pueden aparecer mientras programa ADO con MySQL (para más detalles de las opciones CURSORLOCATION, CURSORTYPE y LOCKTYPE consultar este artículo). En la última línea hemos abierto la conexión, la cual cerraremos posteriormente mediante la instrucción conn.Close.





Enviando datos al campo BLOB

Empecemos cargando una imagen en la base de datos. Además de nuestro objeto de conexión, necesitaremos un objeto RECORDSET y un objeto STREAM. Declaremos estos dos objetos.





Dim rs As ADODB.Recordset

Set rs = New ADODB.Recordset

Dim mystream As ADODB.Stream

Set mystream = New ADODB.Stream

mystream.Type = adTypeBinary





Un objeto ADO Stream puede manejar texto y datos binarios (y puede ser utilizado para recuperar textos largos almacenados en los campos BLOB). Tenemos que especificar que tipo de dato vamos a utilizar usando el valor adTypeBinary en el parámetro Type.



Lo primero que se requiere hacer es agregar un registro en blanco en el recordset





rs.Open "SELECT * FROM files WHERE 1=0", conn, adOpenStatic, adLockOptimistic

rs.AddNew



Ahora tenemos un recordset vacgo (gracias a la cláusula WHERE) para trabajar con el, al cual le vamos a agregar un nuevo registro. Vamos a cargar el archivo usando el objeto STREAM.





mystream.Open

mystream.LoadFromFile "c:\myimage.gif"





Una vez cargado el archivo procedemos a complementar los datos del recordset y actualizarlo





rs!file_name = "myimage.gif"

rs!file_size = mystream.size

rs!file = mystream.read

rs.Update

mystream.Close

rs.Close

conn.Close



Recuperando datos

Bien, ahora que tenemos la imagen en nuestra tabla, estamos listos para recuperarla. Como lo hemos hecho anteriormente, inicializamos la conexión y el recordset





Dim conn As New ADODB.Connection

conn.ConnectionString = GloConnectionString

conn.CursorLocation = adUseClient

conn.Open

Dim rs As New ADODB.Recordset

Dim mystream As New ADODB.Stream

mystream.Type = adTypeBinary

rs.Open "Select * from files WHERE files.file_id = 1", conn





Hemos abierto la conexión y el recordset, y se ha declarado el objeto STREAM. Para traer nuestro archivo abrimos el objeto STREAM, escribimos a el desde el recordset y entonces lo guardamos como archivo





mystream.Open

mystream.Write

rs!File

mystream.SaveToFile "c:\newimage.gif", adSaveCreateOverWrite

mystream.close

rs.Close

conn.Close





He
joseph
2016-06-27 04:32:44 UTC
Si aspiras transaccional en Forex es mejor tener un experimentado que te ayuda y si no te quedas satisfecho con uno entonces hay una posibilidad mejor, 1aforex de aquí https://tr.im/1B4by donde un montón de técnicos están allí para ayudarte.

En 1aforex están tan convencidos que llegaras a ser un clientefiel que te da igualmente la posibilidad de recuperar tu dinero si no estás contento con ellos o si no pretendes ganar dinero.
?
2014-11-25 11:46:39 UTC
Muchas Personas tratan de hacer dinero con el trading online, pero sólo unos pocos tienen éxito ... ¿por qué?

Porque saben cómo hacer y seguir una estrategia precisa. Si usted desea aprender cómo realmente hacer dinero con el trading online a verlo http://trading-on.info


Este contenido se publicó originalmente en Y! Answers, un sitio web de preguntas y respuestas que se cerró en 2021.
Loading...