Foros del Web » Programación para mayores de 30 ;) » .NET »

guardar imagen en sQL desde c#

Estas en el tema de guardar imagen en sQL desde c# en el foro de .NET en Foros del Web. hola banda,, tengo una duda,, resulta que quiero guarda una imagen en sql, y nose como hacerle,, alguien me podria echar una ayuda? se lo ...
  #1 (permalink)  
Antiguo 30/03/2012, 18:30
Avatar de elhombredeblanko  
Fecha de Ingreso: junio-2011
Ubicación: México Lindo y Querido
Mensajes: 212
Antigüedad: 12 años, 10 meses
Puntos: 2
guardar imagen en sQL desde c#

hola banda,, tengo una duda,, resulta que quiero guarda una imagen
en sql, y nose como hacerle,, alguien me podria echar una ayuda?
se lo agradecere mucho..

lo que habia echo era guardando la ruta donde cargo mi picturebox
pero me comentan que hay una forma mas eficiente de hacerlo

espero alguien pueda mostrarle algun ejempplo o alguna guia

gracias de antemano
__________________
si siempre hay algo nuevo que aprender
  #2 (permalink)  
Antiguo 01/04/2012, 21:02
Avatar de ramirezmario7  
Fecha de Ingreso: febrero-2008
Ubicación: Medellín
Mensajes: 336
Antigüedad: 16 años, 2 meses
Puntos: 56
Respuesta: guardar imagen en sQL desde c#

Hola.
Mira esto a ver si te seirve.

Código:

        /// El método Image2Bytes recibe como parámetro un objeto de tipo Image,
        /// crea un fichero temporal y lo guarda como PNG,
        /// lee el contenido de ese fichero y lo asigna a un array de tipo Byte,
        /// para finalmente devolver dicho array.
        /// </summary>
        /// <param name="img"></param>
        /// <returns></returns>
        private byte[] Image2Bytes(Image img)
        {
            string sTemp = Path.GetTempFileName();
            FileStream fs = new FileStream(sTemp, FileMode.OpenOrCreate, FileAccess.ReadWrite);
            img.Save(fs, System.Drawing.Imaging.ImageFormat.Png);
            fs.Position = 0;

            int imgLength = Convert.ToInt32(fs.Length);
            byte[] bytes = new byte[imgLength];
            fs.Read(bytes, 0, imgLength);
            fs.Close();
            return bytes;
        }

/// <summary>
        /// el método Byte2Image recibe un array de bytes como parámetro,
        /// lo asigna a un objeto del tipo MemoryStream y ese "stream" lo utiliza para crear un objeto del tipo Bitmap,
        /// finalmente devuelve ese objeto que en el fondo es un objeto de tipo Image.
        /// </summary>
        /// <param name="bytes"></param>
        /// <returns></returns>
        private Image Bytes2Image(byte[] bytes)
        {
            if (bytes == null) return null;

            MemoryStream ms = new MemoryStream(bytes);
            Bitmap bm = null;
            
            try
            {
                bm = new Bitmap(ms);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }

            return bm;
        }


#region guardar imagen

            byte[] img = Image2Bytes(this.pbImg.Image);


            string sql = "insert into tbl_imagenes values(@img)";
            string cadena = @"Data Source=DESARROLLO\SQLEXPRESS;Initial Catalog=bdimagenes;Integrated Security=True";
            SqlConnection conexion = new SqlConnection(cadena);
            SqlCommand comando = new SqlCommand(sql, conexion);

            try
            {
                conexion.Open();
                comando.Parameters.AddWithValue("@img", img);

                comando.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                conexion.Close();
            }

            #endregion


#region Consultar imagen

            string sql = "select top 1 foto from tbl_imagenes";
            string cadena = @"Data Source=DESARROLLO\SQLEXPRESS;Initial Catalog=bdimagenes;Integrated Security=True";
            SqlConnection conexion = new SqlConnection(cadena);
            SqlCommand comando = new SqlCommand(sql, conexion);
            

            try
            {
                SqlDataReader dr;
                conexion.Open();
                dr =  comando.ExecuteReader();

                dr.Read();
                
                byte[] img = (byte[])dr[0];

                this.pbcarga.Image = Bytes2Image(img);
                
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                conexion.Close();
            }

            #endregion
Ese codigo de convertir la imagen lo encontre hace mucho tiempo pero la verdad es que no me acuerdo de donde lo saque.

En el ejemplo que hice guardo la imagen de un picturebox a la base de datos y tambien la cargo a otro picturepox desde la base de datos
__________________
Mario Ramírez
Desarrollador .NET MCTS
https://www.mcpvirtualbusinesscard.c...nteractivecard

Última edición por ramirezmario7; 01/04/2012 a las 21:09

Etiquetas: sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:50.