none
Ayuda WPF insertar imagen en SQL RRS feed

  • Pregunta

  • Hola compañeros! pido de su ayuda, necesito insertar una imagen en SQL Server desde mi aplicacion en WPF (VB), se que necesito convertir la imagen en Bytes y asi insertarla, apenas eh podido carga la imagen a mi formulario con el siguiente codigo en un Boton:
     Dim bitdecoder As BitmapDecoder
            Dim ofd As New OpenFileDialog()
            ofd.Filter = "Imagenes jpg(*.jpg)|*.jpg"
            If ofd.ShowDialog() = True Then
                Using stream As Stream = ofd.OpenFile()
                    bitdecoder = BitmapDecoder.Create(stream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.OnLoad)
                   
                    Image1.Source = bitdecoder.Frames(0)
                End Using
            Else
                Image1.Source = Nothing
            End If

    Ahora como hago para insertar esa imagen en mi base de datos?, agradeceria cualquier ayuda! Muchas Gracias!

    Luis

    martes, 7 de agosto de 2012 22:18

Todas las respuestas

  • Simplemente lea el archivo completo a un arreglo de tipo Byte.  Luego utilice una sentencia Insert parametrizada o un procedimiento almacenado para insertar el valor (el arreglo de bytes) como si fuera cualquier otro valor.

    Jose R. MCP
    Code Samples

    jueves, 9 de agosto de 2012 4:34
  • Ese es el problema, no se como guardar mi imagen en un arreglo de tipo Byte

    Luis

    jueves, 9 de agosto de 2012 22:10
  • hola mira crea primero una clase que sea asi 

    namespace Guarda_imagen_en_base_de_datos
    {
        class GuardaDatos
        {
            public GuardaDatos()
            {
     
            }
            public static bool verifica(Image Img)
            {
                bool veri = true;
                if (Img == null)
                {
                    veri = false;
                }
                return veri;
            }
                    
            public static byte[] Img2Bytes(Image Img,String Ubicacion)
            {
               byte[] Img2bytes;
               FileStream Fs=new FileStream(Ubicacion,FileMode.Open,FileAccess.Read);
               int LongByts = (int)Fs.Length;
               Img2bytes=new byte[LongByts];
               Fs.Read(Img2bytes,0,(int)LongByts);
               return Img2bytes;
            }
            public static Image Bytes2Imagen(byte[]ByteImg)
            {
                if (ByteImg == null) return null;
                MemoryStream MS = new MemoryStream(ByteImg);
                Bitmap Bm = null;
                try
                {
                    Bm = new Bitmap(MS);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message + "", "Convertir Imagen", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                return Bm;
            }
                               
            public static string  Guarda()
            {
                return "INSERT INTO image VALUES(@foto,@nombre)";
            }
            public static string ContarRegistros()
            {
                return "SELECT ID FROM IMAGE";
            }
            public static string RecuperaID(string Id)
            {
                return "SELECT * FROM IMAGE WHERE(ID='" + Id + "')";
            }
            public static string Eliminar(string Id)
            {
                return "DELETE  FROM IMAGE WHERE(ID='" + Id + "')";
            }
            public static string modificar(string Id)
            {
                return "UPDATE IMAGE SET IMAGEN=@IMAGEN WHERE(ID='" + Id + "')";
            }
        }
    }
    

    nose como tengas organizada tu aplicacion bueno pero para darte una idea yo tengo una clase de conexion hacia la base de datos con los metodos que nesecite mira 

    namespace Guarda_imagen_en_base_de_datos_II
    {
        class GuardaDatos
        {
            public GuardaDatos()
            {
     
            }
            public static bool verifica(Image Img)
            {
                bool veri = true;
                if (Img == null)
                {
                    veri = false;
                }
                return veri;
            }
                    
            public static byte[] Img2Bytes(Image Img,String Ubicacion)
            {
               byte[] Img2bytes;
               FileStream Fs=new FileStream(Ubicacion,FileMode.Open,FileAccess.Read);
               int LongByts = (int)Fs.Length;
               Img2bytes=new byte[LongByts];
               Fs.Read(Img2bytes,0,(int)LongByts);
               return Img2bytes;
            }
            public static Image Bytes2Imagen(byte[]ByteImg)
            {
                if (ByteImg == null) return null;
                MemoryStream MS = new MemoryStream(ByteImg);
                Bitmap Bm = null;
                try
                {
                    Bm = new Bitmap(MS);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message + "", "Convertir Imagen", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                return Bm;
            }
                               
            public static string  Guarda()
            {
                return "INSERT INTO image VALUES(@foto,@nombre)";
            }
            public static string ContarRegistros()
            {
                return "SELECT ID FROM IMAGE";
            }
            public static string RecuperaID(string Id)
            {
                return "SELECT * FROM IMAGE WHERE(ID='" + Id + "')";
            }
            public static string Eliminar(string Id)
            {
                return "DELETE  FROM IMAGE WHERE(ID='" + Id + "')";
            }
            public static string modificar(string Id)
            {
                return "UPDATE IMAGE SET IMAGEN=@IMAGEN WHERE(ID='" + Id + "')";
            }
        }
    }
    

    para guardarla después que la tengas cargada en el clik haces esto 

    private void Guarda_Click(object sender, EventArgs e)
            {
                string TituloMsBox = "Guarda Imagen";
                if (GuardaDatos.verifica(this.pictureBox1.Image))
                {
                    ConexionPru Conex = new ConexionPru(GuardaDatos.Guarda(),GuardaDatos.Img2Bytes(this.pictureBox1.Image,this.Ubicacion),TituloMsBox,this.textBox1.Text);
                    if (Conex.Ejecutar()=="Ok")
                    {
                        MessageBox.Show("Los datos se guardaron correctamente", "Guarda", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else
                {
                    MessageBox.Show("No se ha seleccionado ninguna imagen para guardar \nbruto", "Guarda Imagen", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }


    brahman

    viernes, 31 de agosto de 2012 1:08