es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Obtener imagen de MySQL y asignar a pictureBox en C# Recuperar imagen desde MySQL y asignar a pictureBox en C#

Estoy tratando de recuperar datos de mi base de datos y establecerlos en un cuadro de texto y un cuadro de imagen usando un cambio de texto.

Aquí está mi código:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    string sqlstring = "database=db_phonebook;user=root;password='';server='localhost';SSL Mode=None";
    MySqlConnection mysqlcon = new MySqlConnection(sqlstring);
    MySqlCommand mysqlcom;
    MySqlDataReader mdr;

    mysqlcon.Open();

    string selectquery = ("SELECT * FROM tbl_phonebook WHERE CID LIKE '" + this.textBox1.Text + "%'");
    mysqlcom = new MySqlCommand(selectquery, mysqlcon);

    mdr = mysqlcom.ExecuteReader();

    if (mdr.Read())
    {
        cid.Text = mdr.GetString("CID");
        name.Text = mdr.GetString("Name");
        address.Text = mdr.GetString("Address");
        contact.Text = mdr.GetString("Contact_Number");
        email.Text = mdr.GetString("Email_Address");
        photobox.Image = mdr.GetStream("Photo"); // esta línea es el error que dice "no se puede convertir implícitamente el tipo 'string' a 'System.Drawing.Imaging'"
    }
    else
    {
        MessageBox.Show("¡Registro no encontrado!");
    }

    mysqlcon.Close();
}

¿Cómo puedo solucionar “no se puede convertir implícitamente el tipo ‘string’ a ‘System.Drawing.Imaging'” o hay otra forma de mostrar la imagen de la base de datos en el cuadro de imagen?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para solucionar el error, necesitas convertir la representación en forma de cadena de la imagen en la base de datos a un formato de imagen real. Puedes hacer esto utilizando el método System.Drawing.Image.FromStream().

    Reemplaza la línea:

    photobox.Image = mdr.("Photo");
    

    Con:

    byte[] imgData = (byte[])mdr["Photo"];
    if (imgData != null && imgData.Length > 0)
    {
        using (MemoryStream ms = new MemoryStream(imgData))
        {
            photobox.Image = Image.FromStream(ms);
        }
    }
    else
    {
        photobox.Image = null;
    }
    

    Este código recupera los datos de la imagen de la base de datos como una matriz de bytes, verifica si no es nulo y tiene una longitud mayor a 0, crea un flujo de memoria a partir de la matriz de bytes y la convierte en una imagen utilizando el método Image.FromStream(). Si no hay datos de imagen en la base de datos, establece la imagen del cuadro de imagen como nula.

    Alternativamente, puedes almacenar la ruta del archivo de imagen en la base de datos en lugar de almacenar la imagen en sí. Luego puedes recuperar la ruta del archivo y cargar la imagen en el cuadro de imagen utilizando el método Image.FromFile().

Comments are closed.