VFP and mysql

Estaba viendo que un usuario tenia un problema para ingresar una imagen y le recomendast un campo meno y después un general y así...
¿Yo tengo un problema algo similar yo utilizando la base de datos de fox genero un campo general e inserto un ole sin embargo quisiera hacer lo mismo pero en mysql por ejemplo tengo una gráfica y quiero introducir la gráfica en una campo en mysql?
Respuesta
1
Vamos a solucionar esto desglosando tres pequeños ejemplos de almacenamiento de imágenes en MySQL.
Crear una tabla en MySQL para almacenar las imágenes.
Archivar una imagen en un campo de la tabla de nuestra base de datos.
Proceder a su descarga posterior.
1. Crear una tabla de MySQL
Vamos a tener que crear una pequeña tabla en nuestra base de datos MySQL con la siguiente estructura:
CÓDIGO, DESCRIPCIÓN, FOTO (Atención al campo foto ya que será del tipo BLOB)
Crearemos la tabla desde nuestro querido VFP.
******************************************** * CREACION DE TABLA (albumfotos) ******************************************** LOCAL CSQL, NH, CCADENA CSQL="" NH=0 CCADENA="" CSQL= "DRIVER={MySQL ODBC 3.51 Driver};" + ; "SERVER=127.0.0.1;" + ; "PORT=3306;" + ; "UID=usuario;" + ; "PWD=pasword;" + ; "DATABASE=mybasededatos;" + ; "OPTIONS=2049;" NH=SQLSTRINGCONNECT(""+CSQL, .T.) IF NH > 0 SQLSETPROP(NH,'Asynchronous', .T.) SQLSETPROP(NH,'BatchMode', .T.) TEXT TO CSQL TEXTMERGE NOSHOW CREATE TABLE albumfotos ( codigo char(03) NOT NULL default '000', descripcion varchar(50) default '', foto longblob, PRIMARY KEY (codigo)) ENGINE=InnoDB ROW_FORMAT=DYNAMIC ENDTEXT SQLPREPARE(NH,""+CSQL) SQLEXEC(NH) WAIT WINDOW 'Tabla Creada' SQLDISCONNECT(NH) ENDIF RELEASE CSQL,NH,CCADENA *************************************************************
Vamos a solucionar esto desglosando tres pequeños ejemplos de almacenamiento de imágenes en MySQL.
Crear una tabla en MySQL para almacenar las imágenes.
Archivar una imagen en un campo de la tabla de nuestra base de datos.
Proceder a su descarga posterior.
1. Crear una tabla de MySQL
Vamos a tener que crear una pequeña tabla en nuestra base de datos MySQL con la siguiente estructura:
CÓDIGO, DESCRIPCIÓN, FOTO (Atención al campo foto ya que será del tipo BLOB)
Crearemos la tabla desde nuestro querido VFP.
********************************************
* CREACION DE TABLA (albumfotos)
********************************************
LOCAL CSQL, NH, CCADENA
CSQL=""
NH=0
CCADENA=""
CSQL= "DRIVER={MySQL ODBC 3.51 Driver};" + ;
"SERVER=127.0.0.1;" + ;
"PORT=3306;" + ;
"UID=usuario;" + ;
"PWD=pasword;" + ;
"DATABASE=mybasededatos;" + ;
"OPTIONS=2049;"
NH=SQLSTRINGCONNECT(""+CSQL, .T.)
IF NH > 0
        SQLSETPROP(NH,'Asynchronous', .T.)
        SQLSETPROP(NH,'BatchMode', .T.)
        TEXT TO CSQL TEXTMERGE NOSHOW
            CREATE TABLE albumfotos (
                codigo char(03) NOT NULL default '000',
                descripcion varchar(50) default '',
                foto longblob,
                PRIMARY KEY (codigo))
                ENGINE=InnoDB ROW_FORMAT=DYNAMIC
        ENDTEXT
        SQLPREPARE(NH,""+CSQL)
        SQLEXEC(NH)
        WAIT WINDOW 'Tabla Creada'
        SQLDISCONNECT(NH)
Endif
Release csql, NH, ccadena
*************************************************************2. Archivar imagen en la tabla de MySQL.
Vamos a archivar una imagen en la tabla (albumfotos). La imagen estará ubicada en el directorio raíz C:\ y será el archivo de imagen FOTO001.JPG
Crearemos una variable en VFP del tipo BLOB que contendrá la imagen antes de su posterior grabación: (En este caso omitiremos las ordenes de conexión a la base de datos)
********************************************
* ARCHIVAR IMAGEN
********************************************
LOCAL BIMAGEN AS BLOB
BIMAGEN=(0h)         && Inicializamos la Variable
BIMAGEN=FILETOSTR("C:\FOTO001.JPG")
TEXT TO CSQL TEXTMERGE NOSHOW
        REPLACE INTO albumfotos
                SET   CODIGO='001',
                        DESCRIPCION='FOTO-001',
                        FOTO=?BIMAGEN
ENDTEXT
SQLPREPARE(NH,""+CSQL)
SQLEXEC(NH)
WAIT WINDOW 'Imagen Grabada'
RELEASE BIMAGEN
*************************************************************3. Extraer imagen de la tabla de MySQL.
Vamos a Extraer la misma imagen de la tabla de MySQL y ahora la guardaremos en el directorio fotos. (Obviamente en este caso también omitiremos las ordenes de conexión a la base de datos)
********************************************
* EXTRAER IMAGEN
********************************************
TEXT TO CSQL TEXTMERGE NOSHOW
    SELECT FOTO
        FROM albumfotos WHERE CODIGO='001'
ENDTEXT
SQLPREPARE(NH,""+CSQL,"TCURSOR")
SQLEXEC(NH)
SELECT TCURSOR
IF RECCOUNT() > 0
    STRTOFILE(TCURSOR.FOTO,"C:\FOTOS\FOTO001.JPG")
Endif
Close tables all
********************************************Esto no solo sirve para almacenar imágenes solamente, También es posible almacenar documentos PDF, Word, lo que se nos ocurra. Yo por ejemplo lo utilizo para almacenar cada logo de empresa en mi base de datos, para posteriormente imprimirlo en la cabecera de las facturas e informes.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas