Я сталкиваюсь с этой ошибкой, когда пытаюсь сохранить изображение в базе данных.
Что я делаю неправильно?

Вот дизайн моей таблицы:

Я использую Microsoft Server 2008.
Я сталкиваюсь с этой ошибкой, когда пытаюсь сохранить изображение в базе данных.
Что я делаю неправильно?

Вот дизайн моей таблицы:

Я использую Microsoft Server 2008.
У вас есть две проблемы:
Image в SQL Server. Это фактически просто большой двоичный объект (BLOB в общем выражении). Чтобы сохранить изображение (или что-нибудь еще) в этом столбце, сначала нужно преобразовать его в byte[], а затем сохранить этот массив байтов в столбце.Image, который устарел. Если у вас есть контроль над этим дизайном, измените его на использование varbinary(MAX). Пока тип Image все еще находится в SQL Server 2008 R2, он будет удален из будущих версий в какой-то момент.Чтобы получить byte[], представляющий изображение, попробуйте это:
byte[] data;
using(System.IO.MemoryStream stream = new System.IO.MemoryStream())
{
image.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp);
data = stream.ToArray();
}
Теперь переменная data содержит двоичные данные изображения, и вы можете использовать это как свое значение параметра. Есть дополнительные шаги, которые вы можете предпринять здесь (например, сохранение в другом формате, например JPEG), но это должно по крайней мере начать работу.
При извлечении данных он также возвращается как byte[], поэтому вам нужно снова включить его в изображение.
byte[] data = ...;
Image image = Image.FromStream(new System.IO.MemoryStream(data));
Простой поиск google дает решение для этого: http://www.eggheadcafe.com/community/aspnet/10/10081215/inserting-image-in-sql-server.aspx
Ошибка довольно ясна, нет никакого преобразования из объекта GDI Image в массив байтов (это то, чем действительно является тип столбца данных SQL Server). Вам необходимо преобразовать объект Image в массив байтов, прежде чем добавлять его в качестве параметра.