c#winforms insert image в базу данных Mysql

приложение винформс, работает по локальке , не получается грузить в базу данных Mysql изображение , никаких действий не происходит, тип поля в базе данных стоит blob. ниже выложил код. помогите пожалуйста разобраться ,несколько дней мучаюсь. никак не решится

namespace LOCAL_PROJECT
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        DataTable dt = new DataTable("Employee");
        MySqlCommand command;
        MySqlConnection con = new MySqlConnection("server = 192.168.1.199; UserId = admin; Password = 12345; database = department");
        MySqlDataAdapter adapter = new MySqlDataAdapter();
        int id;

        public void spisok()
        {
            con.Open();

            MySqlDataAdapter adapter = new MySqlDataAdapter(" SELECT* FROM `Employee` ", con);
            DataSet dset = new DataSet();
            adapter.Fill(dset);
            dataGridView1.DataSource = dset.Tables[0];
            con.Close();
        }


         //ADD BUTTON
        private void button5_Click(object sender, EventArgs e)
        {

            string path = @"C:\image.jpg";
          
          byte[] imageBytes = File.ReadAllBytes(path);
        
            string query = "INSERT INTO Employee(id, name, satstype, year, prefix, size, freesize, internet_size, freesizeint, workintnumber, abonplata, dslam48, dslam128, dslam288, dslam896, kabel30, kabel50, kabel100, kabel200, dizelwork, mosnost, dizelyear, errorport, akkumwork, akkumworktime, akkumamount, montyor, geolocationc, geolocationb, location, image) " +
                "VALUES (@id, @name, @satstype, @year, @prefix, @size, @freesize, @internet_size, @freesizeint, @workintnumber, @abonplata, @dslam48, @dslam128, @dslam288, @dslam896, @kabel30, @kabel50, @kabel100, @kabel200, @dizelwork, @mosnost, @dizelyear, @errorport, @akkumwork, @akkumworktime, @akkumamount, @montyor, @geolocationc, @geolocationb, @location, @image)";

            this.dataGridView1.DataSource = AutoNumberedTable(dt);
            con.Open();
          
            using (MySqlCommand cmd = new MySqlCommand(query, con))
            {
                cmd.Parameters.Add("@id", MySqlDbType.Int32).Value = null;
                cmd.Parameters.Add("@name", MySqlDbType.VarChar).Value = textBox1.Text;
                cmd.Parameters.Add("@satstype", MySqlDbType.VarChar).Value = comboBox1.Text;
                cmd.Parameters.Add("@year", MySqlDbType.VarChar).Value = comboBox2.Text;
                cmd.Parameters.Add("@prefix", MySqlDbType.VarChar).Value = textBox2.Text;
                cmd.Parameters.Add("@size", MySqlDbType.Int32).Value = textBox3.Text;
                cmd.Parameters.Add("@freesize", MySqlDbType.Int32).Value = textBox4.Text;
                cmd.Parameters.Add("@internet_size", MySqlDbType.Int32).Value = textBox5.Text;
                cmd.Parameters.Add("@freesizeint", MySqlDbType.VarChar).Value = textBox6.Text;
                cmd.Parameters.Add("@workintnumber", MySqlDbType.VarChar).Value = textBox7.Text;
                cmd.Parameters.Add("@abonplata", MySqlDbType.Int32).Value = comboBox3.Text;
                cmd.Parameters.Add("@dslam48", MySqlDbType.Int32).Value = textBox8.Text;
                cmd.Parameters.Add("@dslam128", MySqlDbType.Int32).Value = textBox9.Text;
                cmd.Parameters.Add("@dslam288", MySqlDbType.Int32).Value = textBox10.Text;
                cmd.Parameters.Add("@dslam896", MySqlDbType.Int32).Value = textBox11.Text;
                cmd.Parameters.Add("@kabel30", MySqlDbType.VarChar).Value = textBox12.Text;
                cmd.Parameters.Add("@kabel50", MySqlDbType.VarChar).Value = textBox13.Text;
                cmd.Parameters.Add("@kabel100", MySqlDbType.VarChar).Value = textBox14.Text;
                cmd.Parameters.Add("@kabel200", MySqlDbType.VarChar).Value = textBox15.Text;
                cmd.Parameters.Add("@dizelwork", MySqlDbType.VarChar).Value = comboBox4.Text;
                cmd.Parameters.Add("@mosnost", MySqlDbType.VarChar).Value = textBox16.Text;
                cmd.Parameters.Add("@dizelyear", MySqlDbType.VarChar).Value = comboBox5.Text;
                cmd.Parameters.Add("@errorport", MySqlDbType.VarChar).Value = textBox17.Text;
                cmd.Parameters.Add("@akkumwork", MySqlDbType.VarChar).Value = comboBox6.Text;
                cmd.Parameters.Add("@akkumworktime", MySqlDbType.VarChar).Value = textBox18.Text;
                cmd.Parameters.Add("@akkumamount", MySqlDbType.VarChar).Value = comboBox7.Text;
                cmd.Parameters.Add("@montyor", MySqlDbType.VarChar).Value = textBox19.Text;
                cmd.Parameters.Add("@geolocationc", MySqlDbType.VarChar).Value = textBox21.Text;
                cmd.Parameters.Add("@geolocationb", MySqlDbType.VarChar).Value = textBox22.Text;
                cmd.Parameters.Add("@location", MySqlDbType.VarChar).Value = textBox23.Text;
                cmd.Parameters.Add("@image", MySqlDbType.Blob).Value = imageBytes;
                cmd.ExecuteNonQuery();
            }
         
            con.Close();
            MessageBox.Show("Added!");
         
            spisok();
        }
        private void pictureBox2_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog ofd = new OpenFileDialog()
            {
                Filter = "Image Files(*.jpg; *.png; *.jpeg)|*.jpg|*.png|*.png",
                Multiselect = false
            })
            {
                if (ofd.ShowDialog() == DialogResult.OK)
                {
                    //display image to
                    pictureBox2.Image = Image.FromFile(ofd.FileName);

                }
            }
        }
    }
}

Ответы (1 шт):

Автор решения: S.H.

Я попробовал смоделировать ситуацию.

Обратите внимание: есть BLOB, MEDIUMBLOB и LONGBLOB

У меня получилось вставить картинку с типом LONGBLOB:

    // CREATE TABLE `testdb`.`pictures` (
    // `id` INT NOT NULL AUTO_INCREMENT,
    // `pixblob` LONGBLOB NOT NULL,
    // PRIMARY KEY(`id`));


    private void Button1_Click(object sender, EventArgs e)
    {
        try
        {
            var builder = new MySqlConnectionStringBuilder
            {
                Server = "192.168.0.101",
                UserID = "konst",
                Password = "<password>",
                Database = "testdb",
            };
            string cnString = builder.ConnectionString;
            // open a connection
            using (var connection = new MySqlConnection(cnString))
            {
                connection.Open();

                byte[] imageBytes = File.ReadAllBytes("nature.jpg");

                // create a DB command and set the SQL statement with parameters
                using (var command = connection.CreateCommand())
                {
                    command.CommandText = @"INSERT INTO pictures (pixblob) VALUES (@blob);";
                    command.Parameters.Add("@blob", MySqlDbType.LongBlob).Value = imageBytes;
                    command.ExecuteNonQuery();
                }
            }
            MessageBox.Show("Done!");
        }
        catch (Exception ex)
        {
            MessageBox.Show($"Error: {ex.Message}");
        }
    }

ССылка на гитхаб, папка MysqlBlobExample

Успехов!

→ Ссылка