JPG en bd MySQL?

Iniciado por ferlucas, 28 Junio 2005, 21:08 PM

0 Miembros y 1 Visitante están viendo este tema.

ferlucas

En si es eso. Tengo que meter una imagen (JPG) dentro de un campo de una bd MySQL. El campo esta definido como MEDIUMBLOB.
Alquien puede darme una mano?.
Saludos.

- "Si no eres parte de la solución... eres parte del problema."

soplo

Hola
Es un error meter imágenes en una base de datos.
Lo correcto es guardar las imágenes en un directorio y guardar en la base de datos la ubicación de esa imagen.

De esa forma solo guardas un string.

Un saludo
Callar es asentir ¡No te dejes llevar!

ferlucas

Cita de: soplo en 29 Junio 2005, 13:28 PM
Hola
Es un error meter imágenes en una base de datos.
Lo correcto es guardar las imágenes en un directorio y guardar en la base de datos la ubicación de esa imagen.

De esa forma solo guardas un string.

Un saludo

Encontre por otro lado la forma de hacerlo.
Hice la comparacion. La base de datos me quedo de 78MB. El directorio con las imagenes es de 77MB.
Viendo que es tan poca la diferencia, prefiero meter las imagenes dentro de la base de datos. De esta forma, ahorro en tiempo de back-up (al no tener que hacer 2 procesos por separado), si monto un sitio web con esa base de datos no tengo que subir las imagenes al server, si me borran las imagenes no hay problema (de hecho, al grabarlas se borran de HD), entre otros factores mas.
Igualmente, agradezco tu opiñíon. Pero, a mi criterio, no es ningún error.
Saludos y nuevamente, gracias.

- "Si no eres parte de la solución... eres parte del problema."

sexiboymx

hola!!!
pasa el dato como le hiciste ;D
tengo pendiente un proyecto de catalogo de productos :-[ y quisiera hacer un intento con MySQL
aver si puedo  ??? 

ferlucas

Cita de: sexiboymx en  1 Julio 2005, 22:20 PM
hola!!!
pasa el dato como le hiciste ;D
tengo pendiente un proyecto de catalogo de productos :-[ y quisiera hacer un intento con MySQL
aver si puedo  ??? 

estuve medio perdido por eso no lo hice antes. Suelo escribir la solucion que encontre para poder ayudar a los que tengan el mismo problema. La verdad, es que no me fijo si es lo mejor o no, me fijo en que es lo que piden. Independientemente de mi criterio.
Bueno... paso los codigos de como lo hice.

Antes que nada, en la tabla de la bd MySQL debemos definir un campo como LONGBLOB (lo habia definido como BLOB pero me cortaba la imagen).

CitarPara grabar las imagenes
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim ms As New ADODB.Stream

cn.ConnectionString = "PROVIDER=MSDASQL.1;DRIVER={MySQL ODBC 3.51.06 Driver};SERVER=server_name_or_ip;DATABASE=db_name;UID=user_id;PWD=user_pass;OPTION=16427;"
cn.Open

Set rs.ActiveConnection = cn
rs.CursorLocation = adUseClient
rs.CursorType = 3
rs.LockType = 3
rs.Source = "SELECT * FROM tabla WHERE id=1" 'registro a modificar
rs.Open

ms.Type = adTypeBinary
ms.Open
ms.LoadFromFile (Path y nombre de la imagen)
rs.Fields("imagen").Value = ms.Read
rs.Update
rs.Close
ms.Close
cn.Close
Set ms = Nothing
Set rs = Nothing
Set cn =  Nothing

CitarPara leer la imagen
'En este caso, la mostramos en un PictureBox
'Lo que hacemos es generar una imagen.jpg temporal
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim ms As New ADODB.Stream

cn.ConnectionString = "PROVIDER=MSDASQL.1;DRIVER={MySQL ODBC 3.51.06 Driver};SERVER=server_name_or_ip;DATABASE=db_name;UID=user_id;PWD=user_pass;OPTION=16427;"
cn.Open

Set rs.ActiveConnection = cn
rs.CursorLocation = adUseClient
rs.CursorType = 3
rs.LockType = 3
rs.Source = "SELECT * FROM tabla WHERE id=1" 'registro a modificar
rs.Open
ms.Type = adTypeBinary
ms.Open
ms.Write rsImg.Fields("imagen").Value
ms.SaveToFile (Path y nombre de JPG temporal), adSaveCreateOverWrite
Picture1.Picture = LoadPicture(Path y nombre de JPG temporal)

- "Si no eres parte de la solución... eres parte del problema."

soplo

Hola
Debo decir que me sigue pareciendo un mal camino. Nunca es recomendable insertar imágenes en registros de una base de datos. Una cosa es que se pueda hacer y otra es el rendimiento posterior.

No acabo de verle la ventaja a tener una imagen en un campo de una base de datos o tener en ese campo un string que indica donde está la imagen que se quiere cargar. El resultado es el mismo, cuesta lo mismo y tal, pero bueno ...

Un saludo
Callar es asentir ¡No te dejes llevar!