Como insertar imagenes en una base de datos SQL CE

Hace tiempo me vi en la necesidad de insertar imágenes dentro de un campo en una base de datos de Sql CE, algo que resulta relativamente sencillo ha resultado ser algo no muy conocido, (y desde mi punto de vista proco práctico) ya que me estan llegando de nuevo consultas sobre como se podría hacer, así que para aquellos que lo necesitéis (antes o después ocurrirá) aquí os dejo el ejemplo y podréis encontrar la solución completa con su código fuente en el enlace adjunto al final.

//Cargamos la imagen en un objeto tipo Image
Image dibujo = new Bitmap(rutaAplicacion + @”Imagen.bmp”);

//Creamos un stream en memoria para guardar la imagen
MemoryStream memStream = new MemoryStream();

//Guardamos la imagen en nuestro stream especificando el formato (jpg,bmp…) atentos al parámetro ImageFormat
dibujo.Save(memStream,System.Drawing.Imaging.ImageFormat.Bmp);

//Guardamos el stream en un array de bytes
Byte[ ] dibujoByteArray = memStream.GetBuffer();

//Declaramos y abrimos la conexión con la base de datos donde la variable de conexión especifica el path de nuestro archivo sdf
SqlCeConnection conexion = new SqlCeConnection(“Data source=” + cadenaConexion);

conexion.Open();

//Creamos el comando SQL para insertar, atentos al parámetro @Imagen
string comandoSQL = “INSERT INTO Cliente (No,Nombre,Imagen) VALUES (1,’PACO’,@Imagen)”;

SqlCeCommand comando = new SqlCeCommand(comandoSQL, conexion);

//Asignamos el array de bytes al parametro @Imagen
comando.Parameters.Add(“@Imagen”, dibujoByteArray);

//Ejecutamos y listo!… sed buenos y poner los chequeos…


comando.ExecuteNonQuery();


conexion.Close();


 


Por supuesto si conoceis algún modo mejor de poder hacer esto, o algún otro método alternativo no dudeís en hacermelo llegar!!


Aquí os dejo el enlace,


Un saludo a todos desde MobileNUG
José Antonio


Mobile .NET Users Group


 


 

4 comentarios en “Como insertar imagenes en una base de datos SQL CE”

  1. Que tal, primero que nada te agradezco ya que esta informacion me sirvio bastante, y aprovecho tambien para hacer una consulta, como despliego la imagen una vez guardada en la BD, buscando en internet encontre esto

    Dim arrayImage() As Byte = CType(Me.DataSet11.Tables(0).Rows(Me.ListBox1.SelectedIndex)(“Picture”), Byte())
    Dim ms As New MemoryStream(arrayImage)
    With Me.PictureBox1
    .Image = Image.FromStream(ms)
    .SizeMode = PictureBoxSizeMode.CenterImage
    End With

    Pero en el Compact Framework no existe el metodo Image.FromStream(), ¿Como puedo mostrar la foto que esta en la BD en un PictureBox?

    Espero me puedas ayudar y/o orientar al respecto

  2. Estimado, gracis por publicar tu codigo. Intente correr tu aplicacion de ejemplo en Visual Studio 2008y no me funca. Me tira un error “@Imagen : La matriz de bytes se trunca con una longitud de 8000.”

    Disculpa pero soy principiante en esto.

    saludos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *