如何将图像保存到数据库?

yon*_*236 11 c# winforms

我在尝试将图像保存到数据库时遇到此错误.

我究竟做错了什么? 在此输入图像描述

这是我桌子的设计:

在此输入图像描述

我正在使用Microsoft Server 2008.

Ada*_*son 15

你有两个问题:

  1. 关于ImageSQL Server中数据类型的(可理解的)混淆.这实际上只是一个大型二进制对象(通用术语中的BLOB).要在此列中保存图像(或其他任何内容),必须先将其转换为a byte[],然后将该字节数组存储在列中.
  2. 您正在使用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();
}
Run Code Online (Sandbox Code Playgroud)

data变量现在包含图像的二进制数据,你可以使用它作为你的参数值.您可以在此处执行其他步骤(例如,将其保存为其他格式,例如JPEG),但这至少可以帮助您入门.

检索数据时,它也将作为a返回byte[],因此您需要再次将其转换为图像.

byte[] data = ...;

Image image = Image.FromStream(new System.IO.MemoryStream(data));
Run Code Online (Sandbox Code Playgroud)