Как написали Гордон и Стюарт в комментариях, проблема в том, что вы используете AddWithValue
.
При использовании AddWithValue
компилятор должен вывести тип данных параметра из значения (и метаданных, если они существуют).
Если вы используете встроенный sql, у вас нет метаданных, поэтому тип параметра определяется правилами сопоставления .Net для SQL Server - и строки сопоставляются nvarchar
.
Поэтому вместо AddWithValue
используйте Add
:
comm.Parameters.Add("@date", SqlDbType.Date).Value = textBox_livr.Text;
comm.Parameters.Add("@pu", SqlDbType.Int).Value = textBox_prix.Text;
comm.Parameters.Add("@code", SqlDbType.Int).Value = textBox_art.Text;
comm.Parameters.Add("@remise", SqlDbType.Int).Value = textBox_rem.Text;
Обратите внимание, что я использовал SqlDbType.Date
и SqlDbType.Int
по умолчанию, так как я не знаю фактические типы данных, которые вы используете в своей таблице - так же, как компилятор c #, который я не могу прочитать в вашей базе данных так что я должен угадать.
Для получения дополнительной информации прочитайте статью Джоэла Кехорна Можем ли мы уже прекратить использование AddWithValue ()?