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 ImageImage 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 @Imagenstring 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