Mysql

Solo disponible en BuenasTareas
  • Páginas : 8 (1907 palabras )
  • Descarga(s) : 0
  • Publicado : 19 de febrero de 2012
Leer documento completo
Vista previa del texto
Manejo de campos BLOB con MySQL y Visual Basic En este artículo se explican los detalles del manejo de campos BLOB de MySQL a través de una interfaz en Visual Basic 6 y el uso de ADO. Autor: Mike Hillyer Fecha publicación: 08 Julio del 2003 Última actualización: 24 Septiembre del 2003

Acerca de Este documento está basado en el artículo original en Inglés Accessing MySQL BLOB columns usingVisual Basic 6 escrito por Mike Hillyer. MySQL Hispano agradece a Augusto Barragán C. por su colaboración en la traducción de este artículo. Introducción Uno de los fuertes de MySQL™ es la utilización de campos BLOB (MEMO). Estos campos almacenan datos binarios sin procesar, generalmente archivos, que pueden ser recuperados y manipulados como otros tipos de datos. Un ejemplo de uso podría ser elalmacenamiento de imágenes dentro de una base de datos para posteriormente ser recuperadas desde un website. En mi último proyecto, una aplicación de administración de clientes (CRM por sus siglas en inglés), los campos BLOB son usados por MySQL para guardar varios archivos binarios que tienen relación con los clientes, como cuadros e imágenes digitalizadas de documentos y correspondencia. Ladificultad aparece cuando se quiere acceder un campo BLOB desde VB. Antes de ADO 2.5, el único camino para manipular datos dentro y fuera de campos BLOB de MySQL utilizando Visual Basic era utilizar los métodos APPENDCHUNK y GETCHUNK. Esto involucraba la carga del archivo en una variable tipo VARIANT, para luego enviar el archivo al servidor en varias partes y devolviéndolo de una sola vez al recuperarlo.Con ADO 2.5 se ha adicionado el objeto STREAM, lo que ha simplificado notoriamente el proceso de trabajar con los campos BLOB. En este artículo me centraré en la utilización del objeto STREAM. El artículo de Microsoft sobre como utilizar este objeto puede ser encontrado aquí; básicamente es una muestra del código y puede ser más apropiado para aquellos que no necesitan ninguna explicación. Elcódigo completo del artículo se encuentra al final de este documento. Recomendaría que usted verificara que tiene el último Service Pack de Visual Basic instalado, el cual puede ser encontrado aquí. Instalando este paquete se asegurará que posee la última versión de ADO. En un nuevo (o existente) proyecto de Visual Basic asegúrese que tiene seleccionada la opción Microsoft Activex Data Objects en lasección de referencias del proyecto (en el momento de escribir este artículo la versión es la 2.7). Asumo que tiene a MySQL instalado, y la última versión de MyODBC (actualmente la 3.51.06). Nota: se requiere la versión 3.51.03 o superior para prevenir errores. * Nota del traductor: aunque el artículo tiene como tema principal la utilización de campos MEMO (BLOB), los procedimientos aquí mencionadosse pueden utilizar para acceder directamente a tablas que no contengan este tipo de campos.

Configuración de MySQL Ahora que ADO está instalado y referenciado, se puede utilizar para acceder a los campos BLOB de MySQL. El primer paso es crear la tabla para ser accesada. Usualmente tengo 4 campos: un AUTO_INCREMENT de tamaño apropiado (UNSIGNED SMALLINT) que sirve como llave primaria paraidentificar el archivo, un campo VARCHAR que almacena el nombre del archivo, un campo UNSIGNED MEDIUMINT que almacena el tamaño del archivo, y un campo MEDIUMBLOB que almacena el archivo en sí. Para este ejemplo se utiliza la siguiente definición de tabla:
CREATE TABLE files( file_id SMALLINT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, file_name VARCHAR(64) NOT NULL, file_size MEDIUMINT UNSIGNEDNOT NULL, file MEDIUMBLOB NOT NULL);

Una vez validado el usuario dentro de MySQL, debemos modificar la variable de sistema MAX_ALLOWED_PACKET. Esta variable determina el tamaño del paquete (por ejemplo un registro simple) que puede ser enviada al servidor MySQL. Por defecto, el servidor solo acepta un tamaño máximo de 1 Megabyte desde la aplicación cliente. Si no se intenta exceder este...
tracking img