TatsuSheva Ответов: 1

[C#]как получить изображение LONGBLOB из mysql в picturebox


Привет,
Мне нужно получить длинный блок изображения из mysql.
Поэтому сначала я вставляю его в базу данных с помощью этого:
MemoryStream ms = new MemoryStream();
                  //  PIC_Image.Image.Save(ms, PIC_Image.Image.RawFormat);
                    byte[] img = ms.ToArray();

                    string q = "insert into tb_produits (Image,Designation,Reference,CodeEAN,ChaineEAN,Quantite,PrixReviens,PrixVente) values('" + img+ "')";

Вот чтобы восстановить картину :
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;

        }

 MySqlDataAdapter sda = new MySqlDataAdapter("SELECT * FROM tb_produits WHERE Designation='" + Designation + "'and Reference='" + Reference + "'", MyConnexion);
            DataTable dt = new DataTable();

            sda.Fill(dt);
            if (dt.Rows.Count == 1)
            {
                byte[] img = (byte[])dt.Rows[0]["Image"];

             

              
                PIC_Image.Image = ByteToImage(img);
            }


Что я уже пробовал:

Я попытался восстановить его, но получил ошибку:
Недопустимый параметр в этой строке " растровые БМ = новое растровое изображение(сайт mstream, ложные);"

1 Ответов

Рейтинг:
1

Nunix Monteiro

byte[] img = (byte[])dt.Rows[0]["Image"];

Вот вы должны попробовать поставить вот так:
byte[] img = (byte[])dt.Rows[0]["put the number of column start from zero, in this case I'll say: " 1]


Я думаю, что это должно исправить ситуацию.