Рейтинг:
1
OriginalGriff
Проблема в том, что то, что вы пытаетесь вставить в столбец изображения базы данных, является string
- который является NVARCHAR - и столбец требует VARBINARY данных, или byte
массив.
Разница в том, что string
изготовлен из char
значения, которые являются 16-битными значениями, которые не обязательно допускают все возможные значения. С другой стороны byte
данные являются 8-битными и допускают полный диапазон значений в этих восьми битах: от 0 до 255 включительно.
Что вам нужно сделать, так это преобразовать ваше изображение в байтовые данные вместо строки, и я не могу точно сказать вам, как это сделать, так как понятия не имею, что возвращает ваш метод BarcodeImage.
Однако это может помочь: Почему я получаю " параметр недопустим." исключение, когда я читаю изображение из своей базы данных?[^]- он показывает, как преобразовать изображение в массив байтов и передать его в БД.
rashmi singhai
я использовал для BarcodeImage метод
BarcodeLib.Штрих-кода б = новый BarcodeLib.Штрих-код();
#регион генерирует штрих-код
private byte[] BarcodeImage(string barcodenum)
{
Система.Окна.Формы.PictureBox pic = новая система.Окна.Формы.Элемент управления PictureBox();
типа var = BarcodeLib.Тип.Неуточненные;
тип = BarcodeLib.Тип.CODE128;
если (тип != BarcodeLib.Тип.Неуточненные)
{
фильм.Image = b. Encode(тип, штрих-код, система.Рисование.Цвет.Черный, Система.Рисование.Цвет.Белый, 250, 40);
}
MemoryStream ms = новый MemoryStream();
фильм.Изображение.Сохранить (ms, System.Рисование.Изображений.ImageFormat.ПНГ);
Byte[] данные = МС.GetBuffer();
возвращать данные.Метод toArray();
}
#endregion
OriginalGriff
Итак (не обращая внимания на то, что вы преобразуете байтовый массив в байтовый массив), он возвращает данные, которые вы хотите сохранить: так почему же вы затем преобразуете их в строку, чтобы сохранить в двоичный столбец? Это уже двоичные данные в правильном формате, которые можно напрямую передать в вашу БД через параметр.