C # MySql соединение. Как передать изображение?

0

У меня есть один класс под названием Functions, который будет хранить функции Insert, Update и Delete. Проблема в том, что я не могу понять, как передать изображение (которое я получаю из picturebox). Вот что я пробовал: Класс функций:

 public static Functions Insert(String u, String v, byte[] img)
        {

 String query = string.Format("INSERT INTO example(Name, Description) VALUES ('{0}', '{1}, {2}')", u, v,img);
            MySqlCommand cmd = new MySqlCommand(query, dbConn);

            dbConn.Open();

            cmd.ExecuteNonQuery();

            if (cmd.ExecuteNonQuery() == 1)
            {
                MessageBox.Show("Succesfully added!");

            }

            int id = (int)cmd.LastInsertedId;

            Functions func = new Functions(id,u,v,img);

            dbConn.Close();

            return func;

        }

Кнопка в форме1:

    private void button2_Click(object sender, EventArgs e)
    {

        String u = textBox2.Text;
        String v = textBox3.Text;


        MemoryStream ms = new MemoryStream();
        pictureBox1.Image.Save(ms, pictureBox1.Image.RawFormat);
        byte[] img = ms.ToArray();


        currf = Functions.Insert(u, v, img);
    }

Здесь появляется сообщение об ошибке:

Необработанное исключение типа "MySql.Data.MySqlClient.MySqlException" произошло в MySql.Data.dll

Дополнительная информация: Поле "Изображение" не имеет значения по умолчанию

  • 1
    Вы не используете какой-либо экземпляр MySqlParameter здесь.
  • 0
    Вы указываете два столбца и даете три значения. Вы пытаетесь использовать String.Format с байтовым массивом. Используйте параметры.
Показать ещё 1 комментарий
Теги:
database

1 ответ

1
Лучший ответ

Использование параметров в запросе довольно просто. Сначала вы готовите текст команды sql с использованием заполнителей для параметров. Затем вы добавляете параметры в коллекцию MySqlCommand.Parameters, и, наконец, вы передаете все в базу данных, которая использует коллекцию параметров для правильной установки ваших данных в базовую таблицу

// Notice that you are missing the third field (the image one)
// Please replace Image with the correct name of the image field in your table
string query = @"INSERT INTO example (Name, Description, Image) 
                 VALUES (@name, @description, @img";
MySqlCommand cmd = new MySqlCommand(query, dbConn);
cmd.Parameters.Add("@name", MySqlDbType.VarChar).Value = u;
cmd.Parameters.Add("@description", MySqlDbType.VarChar).Value = v;
cmd.Parameters.Add("@img", MySqlDbType.Binary).Value = img;
dbConn.Open();
// Do not execute the query two times.
// cmd.ExecuteNonQuery();
if (cmd.ExecuteNonQuery() == 1)
{
    MessageBox.Show("Succesfully added!");
    int id = (int)cmd.LastInsertedId;
    ....
}
else
{
    // failure msg ?
}
  • 0
    Спасибо! Я попробовал это, но это дает мне новое исключение, которое я не могу понять, откуда это происходит: фатальная ошибка, возникшая при выполнении команды.
  • 0
    На какой линии вы получаете исключение? Не могли бы вы добавить определение примера таблицы, использованного в приведенном выше коде?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню