How to save Image to a Database?

前端 未结 2 1643

I encounter this error when I\'m trying to save my image into database.

What am I doing wrong? \"enter

2条回答
  •  小鲜肉
    小鲜肉 (楼主)
    2021-01-02 03:55

    You have two issues:

    1. The (understandable) confusion about the 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.
    2. You're using the 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));
    

提交回复
热议问题