none
POR FAVOR AYUDA .... REALMENTE AYUDA PROBLEMA CON IMAGEN EN MYSQL C# RRS feed

  • Pregunta

  • BUENAS NOCHES SEÑORES PROGRAMADORES, ME GUSTARIA QUE PUDIERAN BRINDARME SU AYUDA PARA PODER REALIZAR, UNA ACTUALIZACION DE UNA IMAGEN QUE AGREGE  A MI BASE DE DATOS. LES COMPARTO MI INFORMACION.

     //BOTON QUE BUSCA LA IMAGEN

            private void CargarImagen_Click(object sender, EventArgs e)
            {
                try
                {
                    ImagenBarco.Filter = "Image files (*.jpg, *.jpeg, *.jpe, *.jfif, *.png) | *.jpg; *.jpeg; *.jpe; *.jfif; *.png";
                    if (ImagenBarco.ShowDialog() == DialogResult.OK)
                    {
                        string imagen = ImagenBarco.FileName;
                        PictureBoxImagenBarco.Image = Image.FromFile(imagen);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("El archivo seleccionado no es un tipo de imagen válido");
                }
            }

     //FIN DEL BOTON QUE BUSCA LA IMAGEN

    //CLASE DONDE ESTA ALOJADO EL METODO DE AGREGAR LA IMAGEN

       public class ClassOrdenAltaDal
        {

      /*METODO AGREGAR IMAGEN */


             public static MySqlConnection cnx = new MySqlConnection ("server= XXXXX; database=XXXXXXX; Uid=marsysco_Root; pwd=XXXXXXX;");

            public static DataTable ActualizarImagen(string Q, Image Img)
            {
                MemoryStream ms = new MemoryStream();
                try
                {
                    Img.Save(ms, Img.RawFormat);
                }
                catch 
                {

                }
                byte[] Imagenes = ms.GetBuffer();
                DataTable dt = new DataTable();
                MySqlCommand cmd = new MySqlCommand(Q,cnx);
                MySqlDataAdapter da = new MySqlDataAdapter(cmd);
                cmd.Parameters.AddWithValue("@Imagen", Imagenes);

                try
                {
                    cnx.Open();
                    da.Fill(dt);
                    cnx.Close();
                }
                catch(Exception)
                {
                    throw;
                }
                finally
                {
                    cnx.Close();
                }
                return dt;
            }

            /*FIN METODO AGREGAR IMAGEN */

    }

    //FIN DE LA CLASE DONDE ESTA ALOJADO EL METODO DE AGREGAR LA IMAGEN

    //BOTON AGREGAR IMAGEN

    private void ButtonAgregar_Click(object sender, EventArgs e)
            {

     ClassOrdenAltaDal.ActualizarImagen("INSERT INTO NUEVA_ORDEN(IMAGEN)VALUES(@Imagen)", PictureBoxImagenBarco.Image);

    }

    //FIN DE AGREGAR IMAGEN

    //METODO QUE LLAMO DESDE EL DATAGRIEDVIEW

     public Image byteArrayToImage(byte[] byteArrayIn)
            {
                MemoryStream ms = new MemoryStream(byteArrayIn);
                Image returnImage = Image.FromStream(ms);
                return returnImage;
            }

    //FIN DEL METODO QUE LLAMO DESDE EL DATAGRIEDVIEW

    //DATAGRIDVIEW DONDE VISUALIZO QUE SE AGREGE LA IMAGEN Y LA MANDO A UN PICTURIBOX 

      if (DataGridViewEmbarcacines.CurrentRow.Cells["IMAGEN"].Value == DBNull.Value)//BASE DE DATOS VACIO

                        {
                            MessageBox.Show("gtx");
                        }
                        else
                        {
                            DataGridViewImageCell cell = DataGridViewEmbarcacines.CurrentRow.Cells["IMAGEN"] as DataGridViewImageCell;
                            byte[] imagen = (byte[])cell.Value;
                            pictureBox1.Image = byteArrayToImage(imagen);
                        }

    //FIN DATAGRIDVIEW DONDE VISUALIZO QUE SE AGREGE LA IMAGEN Y LA MANDO A UN PICTURIBOX 

    BUENO HASTA AQUÍ TODO VA DE MARAVILLA Y SIN PROBLEMAS PERO ESTOY CREANDO UN MÉTODO DONDE PUEDA ACTUALIZAR LA IMAGEN QUE AGREGUE ANTES PERO HONESTAMENTE NO TENGO LOS CONOCIMIENTOS EXACTOS PARA LOGRARLO, LES MUESTRO MI INTENTO DE ACTUALIZACIÓN.

     public bool ActualizarImagen(PictureBox pb)
            {
                int retorno = 0;
                MySqlConnection conexion = BdComun.ObtenerConexion();
                MySqlCommand cmd = new MySqlCommand("update IMAGEN set IMAGEN=@Imagen where INDICE='{0}'", conexion);

                cmd.Parameters.AddWithValue("@Imagen", MySqlDbType.Blob);

                MemoryStream ms = new MemoryStream();

                pb.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                cmd.Parameters["@Imagen"].Value = ms.GetBuffer();

                retorno = cmd.ExecuteNonQuery();
                conexion.Close();

                return true;
            }

    //BOTON ACTUALIZAR IMAGEN

       private void ButtonActualizar_Click(object sender, EventArgs e)
            {

         ClassOrdenAltaDal imag = new ClassOrdenAltaDal();
                txtid.Text=Convert.ToString( ClassPasarvariable.IdBarco);
                imag.ActualizarDark(PictureBoxImagenBarco);

    }

    //FIN DE BOTON ACTUALIZAR IMAGEN

    SE QUE ESTE METODO ESTA MAL PERO IGUAL LES COMPARTO EL ERROR QUE ME MUESTRA EL VISUAL STUDIO

    

    POR SU ATENCIÓN Y AYUDA MUCHAS GRACIAS.

    viernes, 8 de noviembre de 2019 5:40

Respuestas

  • // ACTUALIZA Y EL COMPARTO EL METODO DE ACUTALIZACION

     public bool ActualizarDark(PictureBox pb)
            {
                int retorno = 0;
                MySqlConnection conexion = BdComun.ObtenerConexion();
                MySqlCommand cmd = new MySqlCommand("update NUEVA_ORDEN set IMAGEN=@Imagen where INDICE=" + ClassPasarvariable.IdBarco, conexion);

                cmd.Parameters.Add("@Imagen", MySqlDbType.Blob);

                MemoryStream ms = new MemoryStream();

                pb.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
                cmd.Parameters["@Imagen"].Value = ms.GetBuffer();//@Imagen ES EL PARAMETRO QUE SE LE PASA DESDE

                retorno = cmd.ExecuteNonQuery();
                conexion.Close();

                if (retorno > 0) return true;
                else return false;
            }

    viernes, 8 de noviembre de 2019 8:23

Todas las respuestas

  • ESTA ES EL ERROR

    Información adicional: No se puede convertir un objeto de tipo 'System.Byte[]' al tipo 'System.IConvertible'.

    EN EL BOTON ACTUALIZAR LO MODIFIQUE  Y LO TENGO DE ESTA FORMA

       if   (imag.ActualizarDark(PictureBoxImagenBarco)==true)
                {
                    MessageBox.Show("IMAGEN ACTUALIZADA", "FAVOR DE CONTINAR", MessageBoxButtons.OK, MessageBoxIcon.Information);

                }
                else
                {
                    MessageBox.Show("ERROR");
                }



                }

    viernes, 8 de noviembre de 2019 5:51
  • ATUALIZE EL METODO "ACTUALIZAR IMAGEN"

      public bool ActualizarDark(PictureBox pb)
            {
                int retorno = 0;
                MySqlConnection conexion = BdComun.ObtenerConexion();
                MySqlCommand cmd = new MySqlCommand("update NUEVA_ORDEN set IMAGEN='{0}' where INDICE='{1}'", conexion);

                cmd.Parameters.AddWithValue("0", MySqlDbType.Blob);

                MemoryStream ms = new MemoryStream();

                pb.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                cmd.Parameters["0"].Value = ms.GetBuffer();

                retorno = cmd.ExecuteNonQuery();
                conexion.Close();

                if (retorno > 0) return true;
                else return false;
            }

    YA NO ME DA ERROR PERO SIGUE SIN ACTUALIZAR

    viernes, 8 de noviembre de 2019 6:23
  • // ACTUALIZA Y EL COMPARTO EL METODO DE ACUTALIZACION

     public bool ActualizarDark(PictureBox pb)
            {
                int retorno = 0;
                MySqlConnection conexion = BdComun.ObtenerConexion();
                MySqlCommand cmd = new MySqlCommand("update NUEVA_ORDEN set IMAGEN=@Imagen where INDICE=" + ClassPasarvariable.IdBarco, conexion);

                cmd.Parameters.Add("@Imagen", MySqlDbType.Blob);

                MemoryStream ms = new MemoryStream();

                pb.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
                cmd.Parameters["@Imagen"].Value = ms.GetBuffer();//@Imagen ES EL PARAMETRO QUE SE LE PASA DESDE

                retorno = cmd.ExecuteNonQuery();
                conexion.Close();

                if (retorno > 0) return true;
                else return false;
            }

    viernes, 8 de noviembre de 2019 8:23