[C con Clase] manejo de imagenes en mysql

Steven Davidson steven en conclase.net
Vie Mayo 18 02:47:03 CEST 2007


Hola Miguel,

El pasado 2007-05-17 22:21:53, miguel escribió:

m> pues muchas gracias, realmente sí me ha sido de gran ayuda, ya pude manipular algunas imagenes y encontré info que me fue de gran utilidad buscando el tipo de dato que me recomendaste (BLOB)
m> Sin embargo me ha nacido una nueva duda: resulta que el programa que estoy haciendo es en java (requisitos de la universidad), y pues la imagen la guardo con ayuda de funciones de la librería sql de java, pero no se como hacerlo directamente con MySQL, y pues eso hace que cuando vaya a migrar a c++ tenga que buscar nuevamente documentación acerca de esto.
m> Mejor dicho, tratando de explicarme, no sé como hacer una sentencia que sea mas o menos:
m> insert into MiTabla (imagen) values (from input "c:\\MiImagen")
m> o cómo inserto un archivo, bien sea binario o de texto plano, por ejemplo si tuviera mucha info en un .txt, para no copiar todo el contenido en la sentencia, darle la ubicación y que él se encargue de leerlo, así como se puede hacer un select con un output.  
m> No se, tal vez sea algo ilógico y suene tonto, pero me gustaría saber si de alguna manera se puede (solo usando mysql).
m> Agradezco cualquier respuesta al respecto (aunque sea algún comentario que me aterrice :-(), hasta luego

La sentencia complementaria a "SELECT ... INTO TABLE" es "LOAD DATA INFILE". Sin embargo, estas sentencias sirven para guardar y cargar tablas desde ficheros, típicamente de texto. De todas maneras, puedes usar la función 'LOAD_FILE()'. Por ejemplo,

INSERT INTO tabla SET blob_col = LOAD_FILE( 'c:\\MiImagen.bmp' );

Deberías hacr algunas pruebas por si acaso; no estoy seguro si esto funcionará tal cual. Por cierto, el fichero debe ser accesible localmente desde el servidor MySQL.


Usando el API de C, sugiero cargar el fichero en memoria y luego pasar el búfer como valor en la cláusula VALUES para el comando INSERT. Sospecho que es más rápido en ejecución.


Espero que esto te sea útil.

Steven


Más información sobre la lista de distribución Cconclase