Como recuperar imagem do banco de dados MySQL usando c #

Yousuf Iqbal:

Estou tentando recuperar uma imagem no carregamento de formulário usando o comando function, mas ele não carrega e recebo o erro "O parâmetro não é válido". Verifique onde estou errado no código, porque tentei depurar meu código por meio de pontos de interrupção e ele está me mostrando que o código está funcionando bem, mas em algum lugar a imagem não é recuperada do banco de dados para a caixa de imagem.

Aqui está o meu código:

public static Bitmap ByteToImage(byte[] blob)
{
        MemoryStream mStream = new MemoryStream();
        byte[] pData = blob;
        mStream.Write(pData, 0, Convert.ToInt32(pData.Length));
        Bitmap bm = new Bitmap(mStream, false);
        mStream.Dispose();
        return bm;
}

Recuperar imagem usando a Photoloadfunção:

public void photoLoad()
{
        ConnectionDB cnn = new ConnectionDB();

        string query1 = "select image from doctor_image where do='" + DoctorPanel.drUsername + "'";

        try
        {
            cnn.Open();
            MySqlDataReader row;
            row = cnn.ExecuteReader(query1);

            while (row.Read())
            {
                ImageByte = (Byte[])(row["image"]);
            }

            if (ImageByte != null)
            {
                // You need to convert it in bitmap to display the image
                pictureBox1.Image = ByteToImage(ImageByte);
                pictureBox1.Refresh();
            }
        }
        catch (Exception ex)
        {
           MessageBox.Show(ex.Message);
        }
}

Inserir no banco de dados

private void Button6_Click(object sender, EventArgs e)
{
        OpenFileDialog open = new OpenFileDialog();

        // image filters  
        open.Filter = "Image Files(*.jpg; *.jpeg; *.gif; *.bmp)|*.jpg; *.jpeg; *.gif; *.bmp";

        if (open.ShowDialog() == DialogResult.OK)
        {
            // display image in picture box  
            //pictureBox1.Image = new Bitmap(open.FileName);
            pictureBox1.Image = Image.FromFile(open.FileName);

            ConnectionDB cnn = new ConnectionDB();
            cnn.Open();

            string sql = "INSERT INTO doctor_image(image, do) VALUES('" + pictureBox1.Image + "','" + DoctorPanel.drUsername + "')";
            int noofrows = cnn.ExecuteNonQuery(sql);

            if (noofrows != -1)
            {
                MessageBox.Show("Photo uploaded");
            }
            else
            {
                MessageBox.Show("Data insert error");
            }
        }
}
Bradley Grainger:

Esta linha de código está errada:

string sql = "INSERT INTO doctor_image(image, do) VALUES('" + pictureBox1.Image + "','" + DoctorPanel.drUsername + "')";

Em primeiro lugar, você está usando a concatenação de strings para criar o SQL. Essa é uma fonte comum de problemas de segurança (especificamente, injeção SQL). Use os parâmetros.

Em segundo lugar, "'" + pictureBox1.Image + "','"simplesmente produzirá uma string semelhante à 'System.Drawing.Bitmap'que será inserida no seu banco de dados. Obviamente, essa não é uma imagem válida, e é por isso que você recebe a exceção "Parâmetro inválido" ao tentar carregá-la.

Parece que você deseja apenas inserir os bytes da imagem no seu banco de dados, que possui uma correção simples. Você nem precisa usar a Imageclasse; basta ler os bytes do arquivo e carregá-los na tabela:

using (var cmd = new MySqlCommand(@"INSERT INTO doctor_image(image, do) VALUES(@image, @do);", cnn)
{
    cmd.Parameters.AddWithValue("@image", File.ReadAllByes(open.FileName));
    cmd.Parameters.AddWithValue("@do", DoctorPanel.drUsername);
    cmd.ExecuteNonQuery();
}

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Imagem truncada exibida ao tentar recuperar do banco de dados mysql usando python

Como recuperar dados do banco de dados usando json no codeginter

como recuperar dados enormes do banco de dados mysql com várias tabelas usando php

Como fazer upload de blob longo (imagem) para banco de dados mysql usando java e recuperar em php?

Como recuperar perguntas e respostas do banco de dados mysql usando arquivos php

Como recuperar a data desejada do banco de dados de acesso usando C #

Como obter (recuperar) dados do banco de dados mysql para a lista de matrizes usando Java e imprimir usando índices

Como exibir a imagem do banco de dados mysql usando spring mvc

Usando a entrada do formulário como uma variável para recuperar dados de um banco de dados MySQL

C # WPF Recuperar imagem do banco de dados SQL Server, byte para imagem

Como mostrar a imagem para datagridview do banco de dados mysql

Como faço para recuperar uma imagem da pasta usando o banco de dados?

Como recuperar imagens selecionadas que são salvas como tipo BLOB do banco de dados MySQL usando o frasco

Como recuperar a pilha do banco de dados

Como recuperar recursos do banco de dados?

javafx recuperar imagem do banco de dados do servidor sql

Como recuperar data e hora do banco de dados de acordo com o login do usuário usando C #

Como recuperar dados do banco de dados Oracle usando a classe DatabaseSource do ML.NET

Eu quero recuperar dados do banco de dados MySQL, exibindo-os usando a tabela, organizá-los da mesma forma que aparecem na imagem

como recuperar o url da imagem do banco de dados Firebase

Qual é a maneira correta de recuperar dados do banco de dados usando nodejs e MySQL?

Qual é a maneira correta de recuperar dados do banco de dados usando nodejs e MySQL?

Como exibir a imagem do banco de dados em vez do caminho da imagem usando jQuery

Como obter (recuperar) dados do banco de dados SQlite no Flask usando sqlalchemy

como faço para recuperar dados do banco de dados firebase realtime usando kotlin

Como recuperar dados do banco de dados e imprimir em jsp usando spring e hibernate?

Como recuperar dados do banco de dados e exibi-los em jsp usando springs mvc?

Recuperar dados do banco de dados MySQL usando a biblioteca Android Volley é muito lento

Recuperando imagem do banco de dados MySQL

TOP lista

quentelabel

Arquivo