BLOBs

25/11/2003 - 15:36 por Enrique | Informe spam
¿Existe otra forma de leer y escribir imagenes en una base
de datos SQL server 2000 que no sea a traves de escritura
y lectura de archivos en/desde el disco?
Mi intencion es leer una imagen de la BD y mostrarla en un
picturebox.
Si hay alguien que me pudiera ayudar le agradeceria
muchisimo.
 

Leer las respuestas

#1 Marino Posadas
30/11/2003 - 11:05 | Informe spam
Hola Enrique

Lo que quieres hacer es sencillo, utilizando DataSets. Simplemente, tu
"SELECT" tiene que llamar al campo como a cualquier otro dato y después,
convertirlo en un array de bytes, desde el que puede crearse un
MemoryStream, que da origen al Bitmap (Y no hacen falta ficheros físicos).
La cosa, sería algo así:

Pongamos que haces la prueba sobre la tabla Employees de Northwind
(SQL-2000) que tiene un campo Photo. La SELECT sería simplemente: SELECT
photo FROM Employees. A partir de ahí rellenas un DataSet como siempre. Y en
este punto tienes varias opciones, pero para mí la más sencilla es crear un
objeto Binding sobre el PictureBox de destino. Dicho objeto tiene un evento
Format(sender, e) en cuyo parámetro e recibes los datos almacenados en el
Dataset. Y los transformas así:

//Convierte los bits de imagen en un objeto Bitmap que se puede
//asignar a un PictureBox : e.Value es el valor original
byte[] img= (byte[]) (e.Value);
MessageBox.Show(img.Length.ToString());
//Conversión
MemoryStream ms= new MemoryStream();
int offset = 0; //este valor sería 78 trabajando en Access
ms.Write(img, offset, img.Length - offset);
Bitmap bmp = new Bitmap(ms);
ms.Close();

//Escribe el nuevo valor convertido
e.Value = bmp;

Y ya te muestra el gráfico.


Saludos,
Marino
www.ElAveFenix.net



"Enrique" escribió en el mensaje
news:081501c3b361$94970270$
¿Existe otra forma de leer y escribir imagenes en una base
de datos SQL server 2000 que no sea a traves de escritura
y lectura de archivos en/desde el disco?
Mi intencion es leer una imagen de la BD y mostrarla en un
picturebox.
Si hay alguien que me pudiera ayudar le agradeceria
muchisimo.

Preguntas similares