作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在尝试将图像保存到数据库时遇到此错误。
我做错了什么?
这是我的表格设计:
我使用的是 Microsoft Server 2008。
最佳答案
你有两个问题:
Image
数据类型的(可以理解的)混淆。这实际上只是一个大的二进制对象(通俗地说就是 BLOB)。为了在此列中保存图像(或任何其他内容),您必须先将其转换为 byte[]
,然后将该字节数组存储在列中。Image
数据类型,该数据类型已被弃用。如果您可以控制此设计,请将其更改为使用 varbinary(MAX)
。虽然 Image
类型仍在 SQL Server 2008 R2 中,但它会在未来的某个时候从 future 版本中删除。要获得代表图像的 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));
关于c# - 如何将图像保存到数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4852558/
我是一名优秀的程序员,十分优秀!