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
Успехов!