Эта строка кода неверна:
string sql = "INSERT INTO doctor_image(image, do) VALUES('" + pictureBox1.Image + "','" + DoctorPanel.drUsername + "')";
Во-первых, вы используете конкатенацию строк для построения SQL. Это распространенный источник проблем безопасности (в частности, SQL инъекция). Вместо этого используйте параметры.
Во-вторых, "'" + pictureBox1.Image + "','"
просто выведет строку, похожую на 'System.Drawing.Bitmap'
, которая будет вставлена в вашу базу данных. Очевидно, это недопустимое изображение, поэтому при попытке загрузить его вы получаете исключение «Параметр не действителен».
Похоже, вы просто хотите вставить байты изображения в базу данных. , который имеет простое исправление. Вам даже не нужно использовать класс Image
; просто прочитайте байты файла и загрузите их в таблицу:
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();
}