waleed_akre Ответов: 1

Ошибка при сохранении изображения в базе данных


try
{
    if (cn.State.ToString() != "Open")
        cn.Open();
    cmd = new SqlCommand("insert into Cafe_prodect (name_prodect,price,NO_Table,image_prodect,type_prodect) values(@name_prodect,@price,@NO_Table,@image_prodect,@type_prodect)", cn);
    MemoryStream ms = new MemoryStream();

    pictureBox2.Image.Save(ms, pictureBox2.Image.RawFormat);
    byte[] byteImage = ms.ToArray();

    SqlParameter[] param = new SqlParameter[5];

    param[0] = new SqlParameter("@name_prodect", SqlDbType.NVarChar, 200);
    param[0].Value = txtPname.Text;

    param[1] = new SqlParameter("@price", SqlDbType.NVarChar, 200);
    param[1].Value = txtPprice.Text;

    param[2] = new SqlParameter("@NO_Table", SqlDbType.NVarChar, 200);
    param[2].Value = txtNoTbl.Text;

    param[3] = new SqlParameter("@image_prodect", SqlDbType.Image);
    param[3].Value = byteImage;

    param[4] = new SqlParameter("@type_prodect", SqlDbType.NVarChar, 200);
    param[4].Value = txtTyp.Text;

    cmd.Parameters.AddRange(param);
    cmd.ExecuteNonQuery();
    cn.Close();

    MessageBox.Show("تم بنجاح");
}
catch (Exception ex)
{

    MessageBox.Show("ooooo  " + ex.Message);
}


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

Цитата:
значение не может быть нулевым. наименование параметра энкодер

1 Ответов

Рейтинг:
2

OriginalGriff

Посмотрите на ваше сообщение об ошибке:

value cannot be null. parameter name encoder

А теперь взгляните на свой код:
cmd = new SqlCommand("insert into Cafe_prodect (name_prodect,price,NO_Table,image_prodect,type_prodect)...
Вы не устанавливаете значение для encoder столбец - и ошибка говорит о том, что определение таблицы не допускает нулевых значений для этого столбца.

Либо укажите значение, либо измените определение таблицы.

Кстати: вы понимаете, что ходите по всем домам, чтобы сделать свою работу?
Почему бы просто не сделать это:
string strInsert = "INSERT INTO Cafe_prodect " +
                   "(name_prodect, price, NO_Table, image_prodect, type_prodect) VALUES " +
                   "(@name_prodect, @price, @NO_Table, @image_prodect, @type_prodect)";
using (cmd = new SqlCommand(strInsert, cn))
    {
    MemoryStream ms = new MemoryStream();
    pictureBox2.Image.Save(ms, pictureBox2.Image.RawFormat);
    byte[] byteImage = ms.ToArray();

    cmd.Parameters.AddWithValue("@name_prodect", txtPname.Text);
    cmd.Parameters.AddWithValue("@price", txtPprice.Text);
    cmd.Parameters.AddWithValue("@NO_Table", txtNoTbl.Text);
    cmd.Parameters.AddWithValue("@image_prodect", byteImage);
    cmd.Parameters.AddWithValue("@type_prodect", txtTyp.Text);
    cmd.ExecuteNonQuery();
    }