Guardar Imagenes en bases de datos usando c#
Hola.
Después de una prolongada ausencia debido a la culminación de mis labores como estudiante, pues haré la primera entrada post-aniversario de Kernel Error.
La cosa es así para un proyecto de la universidad, tuve que guardar imagenes (fotos puntualmente) en una base de datos, en mi caso peculiarmente Microsoft Access (por obligación mas que por gusto).
En otros manejadores de base de datos (como Ms Sql Server) si existe un tipo imagen para las base de datos, pero en Access podemos usar un tipo de dato objeto ole y a los efectos nos servirá. Empezemos.
Primero debemos leer la imagen de alguna manera, yo lo que hice fue poner un OpenFileDialog donde daba la posibilidad de buscar la imagen, luego cuando tenía el nombre del archivo en el FileName del objeto OpenFileDialog procedía a leer la imagen.
using System.IO;
// opf.Filename trae la ruta donde se encuentra la imagen a leer. FileStream fs = new FileStream(opf.FileName, FileMode.Open, FileAccess.Read); BinaryReader br = new BinaryReader(fs);
teniengo la imagen ya leida la vamos a guardar en un arreglo de bytes y cerramos el FileStream y el BinaryReader
byte[] arr = new byte[fs.Length]; br.Read(arr, 0, (int)fs.Length); br.Close(); fs.Close();
Hecho esto ahora guardaremos a la base de datos yo usaré OleDbCommand y usaremos un parametro del tipo VarBinary
OleDbCommand cm = new OleDbCommand(); cm.CommandText = "INSERT INTO Registro(foto) VALUES(@foto)"; cm.Connection = miconexion; OleDbParameter pa = new OleDbParameter(); pa.Value = arr; pa.OleDbType = OleDbType.VarBinary; pa.Size = arr.Length; pa.ParameterName = "@foto"; cm.Parameters.Add(pa); cm.ExecuteNonQuery();
Listo ya hemos guardado la foto, ahora como la extraemos? supondremos que contamos con un pictureBox y usaremos un MemoryStream para aprovechar la posibilidad de extraer una imagen de un stream
OleDbCommand cm = new OleDbCommand(); cm.CommandText = "SELECT foto FROM Registro"; cm.Connection = miconexion pictureBox1.Image = Image.FromStream(new MemoryStream((byte[])re["foto"]))
saludos
Posts Relacionados
- Cargar un comboBox desde la base de datos en csharp Buenas. Seguimos un poco en la onda de .NET, veamos...
- Lista de países usando c# Hola! Ayer hablaba con Llyn sobre este tema, debido a...
- Balanceo de expresiones usando pilas en c++ Buenas El balanceo de expresiones (no se con que otro...
- Instalar drivers ATI/AMD en Debian usando apt En este metodo es continuación de mi entrada anterior sobre...
- Crear Userbars en Fireworks Usando fundido Pues en este pequeño tutorial se mostrará como hacer una...
- Instalar drivers NVIDIA en Debian usando apt Pues este metodo tiene considerables ventajas sobre usar el instalador...
- Foto Galeria en Flash usando XML Hoy se va a estrenar la seccion de AS lenguaje...



