none
Guardar Imagenes (Binarios Largos) a Access RRS feed

  • Pregunta

  • Hola estoy intentanto pasar mis Imagenes a Binarios Largos y asi pasarlos a mi Base de Datos (Access), el problema que tengo, es que quiero guardar 4 imagenes [LOGO, IMG 1, IMG2, IMG3, IMG4] en el PcitureBox y solamente me guarda una imagen[LOGO], y al momento de la cosulta solo me ejecuta esa imagen[LOGO] en los demas Picturebox, que en realidad debio haber mostrado las imagenes que habian solicitado 

                MemoryStream streamlogo = new MemoryStream();
                imagen_LogoPictureBox.Image.Save(streamlogo, imagen_LogoPictureBox.Image.RawFormat);
                byte[] imglogo = streamlogo.ToArray();
                imglogo = streamlogo.GetBuffer();
    
                MemoryStream stream1 = new MemoryStream();
                imagen_Lugar1PictureBox.Image.Save(stream1, imagen_Lugar1PictureBox.Image.RawFormat);
                byte[] img1 = stream1.ToArray();
                img1 = stream1.GetBuffer();
    
                MemoryStream stream2 = new MemoryStream();
                imagen_Lugar2PictureBox.Image.Save(stream2, imagen_Lugar2PictureBox.Image.RawFormat);
                byte[] img2= stream2.ToArray();
                img2 = stream2.GetBuffer();
    
                MemoryStream stream3 = new MemoryStream();
                imagen_Lugar3PictureBox.Image.Save(stream3, imagen_Lugar3PictureBox.Image.RawFormat);
                byte[] img3 = stream3.ToArray();
                img3 = stream3.GetBuffer();
    
                cmd.Connection = conn;
                cmd.CommandType = CommandType.Text;          
                cmd.CommandText = "UPDATE Lugares SET Direccion ='"+direccionTextBox.Text+"' , Telefono = '"+telefonoTextBox.Text+"', Sitio_Web='"+sitio_WebTextBox.Text+"', Descripcion_General='"+descripcion_GeneralTextBox.Text+"', Horarios='"+horariosTextBox.Text+"', Servicios='"+serviciosTextBox.Text+"', Formas_de_Pago ='"+formas_de_PagoTextBox.Text+"', Texto_Invitacion='"+texto_InvitacionTextBox.Text+"', Lugares_Turisticos_Cercanos='"+lugares_Turisticos_CercanosTextBox.Text+"', Imagen_Logo = "+imagen_LogoPictureBox.Image+", Imagen_Lugar1= "+imagen_Lugar1PictureBox.Image+ ", Imagen_Lugar2= " + imagen_Lugar2PictureBox.Image + ", Imagen_Lugar3= " + imagen_Lugar3PictureBox.Image + " WHERE Municipio='" + NombreLugar + "'AND  Categoria ='" + NombreCategoria + "'AND  Lugar ='" + LugarNom + "'";
                cmd.Parameters.Add(new OleDbParameter("Imagen_Logo", imglogo));
                cmd.Parameters.Add(new OleDbParameter("Imagen_Lugar1", img1));
                cmd.Parameters.Add(new OleDbParameter("Imagen_Lugar2", img2));
                cmd.Parameters.Add(new OleDbParameter("Imagen_Lugar3", img3));
                try
                {
                    conn.Open();
                    cmd.ExecuteNonQuery();
                    MessageBox.Show("Los Datos Se Han Guardado", "INFORMACION", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    conn.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error Causado por:"+ex+"","ERROR", MessageBoxButtons.RetryCancel, MessageBoxIcon.Warning);
    
                }
    Ayuda por favor
    miércoles, 20 de marzo de 2019 1:16

Respuestas

  • hola

    Algo esta raro en el codigo

    byte[] imglogo = streamlogo.ToArray();
    imglogo = streamlogo.GetBuffer();
    

    usas el mismo nombre de variable para dos cosas difeentes ? eso esta confuso

    Ademas en el codigo haces esto

    Imagen_Logo = "+imagen_LogoPictureBox.Image

    como esperas que se asigne el parametro si ninca lo defines

    No concatenes los valore sne el string usa los parametros

    string update = "UPDATE Lugares SET Direccion = @direccion , Telefono = @telefono, Sitio_Web= @sitioweb, ... ";
    OleDbCommand cmd = new OleDbCommand(update, conn);
           
    cmd.Parameters.AddWithValue("@direccion", direccionTextBox.Text);
    cmd.Parameters.AddWithValue("@telefono", telefonoTextBox.Text);
    cmd.Parameters.AddWithValue("@sitioweb", sitio_WebTextBox.Text);
    
    //resto parameros

    no definas los objetos command de forma global

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta HectorDesings jueves, 21 de marzo de 2019 3:33
    miércoles, 20 de marzo de 2019 13:04

Todas las respuestas

  • hola

    Algo esta raro en el codigo

    byte[] imglogo = streamlogo.ToArray();
    imglogo = streamlogo.GetBuffer();
    

    usas el mismo nombre de variable para dos cosas difeentes ? eso esta confuso

    Ademas en el codigo haces esto

    Imagen_Logo = "+imagen_LogoPictureBox.Image

    como esperas que se asigne el parametro si ninca lo defines

    No concatenes los valore sne el string usa los parametros

    string update = "UPDATE Lugares SET Direccion = @direccion , Telefono = @telefono, Sitio_Web= @sitioweb, ... ";
    OleDbCommand cmd = new OleDbCommand(update, conn);
           
    cmd.Parameters.AddWithValue("@direccion", direccionTextBox.Text);
    cmd.Parameters.AddWithValue("@telefono", telefonoTextBox.Text);
    cmd.Parameters.AddWithValue("@sitioweb", sitio_WebTextBox.Text);
    
    //resto parameros

    no definas los objetos command de forma global

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta HectorDesings jueves, 21 de marzo de 2019 3:33
    miércoles, 20 de marzo de 2019 13:04
  • Gracias me sirvio mucho eso de no concatenar y mejor hacer el uso de paremetros.

    Volviendo a lo de la imagen en el codigo, hablas de que uso una variable para diferentes cosas, que en realidad se puede hacer con lo mismo.

    Perdon por esta cuention jajaj, llevo dias leyendo foros, articulos sobre como guardar imagenes con los Binarios, ya lei una pagina que publicaste tu de eso también, y aun no logro hacerlo bien, bueno apenas soy un novato con c# y el mundo de la programacion

    Saludos.

    jueves, 21 de marzo de 2019 3:43