I encounter this error when I\'m trying to save my image into database.
What am I doing wrong?
You have two issues:
Image
data type in SQL Server. This is actually just a large binary object (a BLOB in common parlance). In order to save an image (or anything else) in this column, you have to first convert it to a byte[]
, then store that byte array in the column.Image
data type, which is deprecated. If you have control over this design, change it to use varbinary(MAX)
. While the Image
type is still in SQL Server 2008 R2, it will be removed from future versions at some point.To get a byte[]
representing the image, try this out:
byte[] data;
using(System.IO.MemoryStream stream = new System.IO.MemoryStream())
{
image.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp);
data = stream.ToArray();
}
The data
variable now contains the binary data of the image, and you can use that as your parameter value. There are additional steps you can take here (saving it in another format like JPEG, for example), but this should at least get you started.
When retrieving the data, it'll also come back as a byte[]
, so you'll need to turn that into an image again.
byte[] data = ...;
Image image = Image.FromStream(new System.IO.MemoryStream(data));