Manual vfp blobs
III – Campos BLOB
INTRODUCCIÓN Sigo igual que en las anteriores, no se me ocurre nada. HERRAMIENTAS UTILIZADAS: A excepción del VFP, el software utilizado se puede encontrar en www.mysql.org • • • • VFP 7.0 MySQL 4.0.17 MySQL Connector / ODBC 3.51 MDAC 2.1 o posterior (normalmente instalado junto con Windows)
REQUISITOS PREVIOS • • Haber creado la base de datos y lastablas de los artículos anteriores Tener conocimientos de OLEDB
EMPEZAMOS Hemos estado utilizando la tecnología “SQL-PassThrough” durante las entregas anteriores pero, para el manejo de campos Binary Large OBjects (BLOB) utilizaremos OLEDB. CONECTÁNDONOS CON MySQL UTILIZANDO OLEDB Cadena de conexión: por no ser el tema de éste artículo sólo explicaré los parámetros necesario en ella: Ejemplo decadena de conexión (todo en una sola línea)
DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost; DATABASE=vfp_db; UID=root; PWD='
Parámetro DRIVER SERVER DATABASE UID PWD
Descripción Es el nombre del driver utilizado para realizar la conexión Nombre del servidor o IP Base de datos a la que nos queremos conectar Nombre de usuario Password del usuario
Denny Infante Juárezdenny_infante@hotmail.com
Manual de VFP y MysQL
III – Campos BLOB Probando la conexión…
LOCAL ADOCnx, lRet, oRs, CnxStr ADOCnx = CREATEOBJECT('ADODB.Connection') ADOCnx.CursorLocation = 3 &&adUseClient CnxStr = 'DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;' +; 'DATABASE=vfp_db;UID=root; PWD=' lRet = ADOCnx.Open(CnxStr, "", "") IF ADOCnx.State = 1 THEN oRs = ADOCnx.Execute('SELECT * FROM InnoClientes') IFTYPE('oRs') = 'O' THEN IF oRs.RecordCount > 0 THEN oRs.MoveFirst DO WHILE NOT oRs.Eof ?oRs.Fields[1].Value oRs.MoveNext ENDDO ELSE ?'No se obtuvieron registros de la consulta' ENDIF ELSE ?'Error en la consulta' ENDIF ADOCnx.Close() ELSE ?'ERROR: No se logró conectar con la base de datos' ENDIF
CREANDO LA TABLA PARA ALMACENAR ARCHIVOS Hasta aquí se supone que ya logramos conectarnos con MySQLahora crearemos la tabla con un campo BLOB (ver manual de MySQL para mayor información); la estructura de la tabla es: Campo IDBlob Imagen Tipo Campo entero autonumérico MEDIUMBLOB
Porque MEDIUMBLOB, por el tamaño de almacenamiento 16777215 bytes (ver manual de MySQL para ver capacidad de otros tipos de campos BLOB) La cadena que utilizaremos para la creación de la tabla en la base de datos:CREATE TABLE IF NOT EXISTS BlobTable PRIMARY KEY, Imagen MEDIUMBLOB) (IDBlob INT NOT NULL AUTO_INCREMENT
Denny Infante Juárez denny_infante@hotmail.com
Manual de VFP y MysQL
III – Campos BLOB Creando la tabla con un campo BLOB
LOCAL lcError lcError = .F. ON ERROR lcError = .T. *!* Conectándonos con la base de datos LOCAL ADOCnx, lRet, oRs, CnxStr ADOCnx = CREATEOBJECT('ADODB.Connection')ADOCnx.CursorLocation = 3 &&adUseClient CnxStr = 'DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;' +; 'DATABASE=vfp_db;UID=root; PWD=' lRet = ADOCnx.Open(CnxStr, "", "") *!* Si no nos logramos conectar IF ADOCnx.State 1 OR lcError THEN ?'ERROR: No se logró la conexión con la base de datos' ON ERROR ADOCnx.Close() RETURN .F. ENDIF *!* Sentencia para crear la tabla LOCAL lcSQLCreateTablelcSQLCreateTable = 'CREATE TABLE IF NOT EXISTS BlobTable ' +; '(IDBlob INT NOT NULL AUTO_INCREMENT PRIMARY KEY, ' +; 'Imagen MEDIUMBLOB)' *!* *!* *!* Nota: con esta sentencia no esperamos que nos regrese ningún recordset así que asumiremos que si no ocurre un error la tabla ha sido creada correctamente
oRs = ADOCnx.Execute(lcSQLCreateTable) IF lcError THEN ?'ERROR: no se logró crear la tabla: ' +MESSAGE() ELSE ?'Tabla BlobTable creada!!' ENDIF ON ERROR ADOCnx.Close()
Denny Infante Juárez denny_infante@hotmail.com
Manual de VFP y MysQL
III – Campos BLOB AGREGANDO INFORMACIÓN A LOS CAMPOS TIPO BLOB Para el manejo de campos tipo blob existen dos funciones AppendChunk y GetChunk ambas funciones pertenecen al objeto Recordset (para mayor información consultar la ayuda) Agregando el archivo a...
Regístrate para leer el documento completo.