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
Gracias me fueron muy utiles tus conocimientos.
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
Alex, perdona por no contestar antes pero no vi el comentario!!
Aqui te dejo un ejemplo de como recuperar una imagen guardada en la base de datos SQL CE
http://www.mobilenug.com/desarrollo/Lists/Trucos/DispForm.aspx?ID=12
Espero que te sea útil
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