将映像存储在SQL Server CE数据库中
有没有人知道如何在SQL Server CE数据库中存储图像?
该列应该是什么数据类型? (我猜二进制。)
我使用Linq-To-Datasets。 有可能使用它将图像放入数据库并稍后再将其拉出来吗?
谢谢你的建议。
我是这样做的:
MemoryStream stream = new MemoryStream(); myBitmapImage.Save(stream, ImageFormat.Png); myInsertLinqToDataSetRow.IMAGE_COLUMN = stream.ToArray();
要重新加载它我做了这个:
MemoryStream stream = new MemoryStream(myLinqToDataSetRow.IMAGE_COLUMN); myBitmapImage.SignatureImage = new Bitmap(stream);
我在MSDN上找到一个页面,表示Image列类型正在消失,你应该使用varbinary(MAX)。 SQL Server CE不支持Max,所以我做了varbinary(8000)。
稍后注意:虽然SQL Server CE不支持varbinary(max)。 Varbinary(8000)对于许多图像来说都不够大。 我确实最终使用了Image类型,即使它计划被弃用。 一旦ms在移动平台上提供合理的交替,我将考虑切换。
这是一篇MSDN文章,解释了如何:
http://sofzh.miximages.com/c%23/blockquotep 这不是你问题的直接答案,但我已经很好地将图像的文件路径(例如:C: images image1.png)存储为数据库中的字符串值而不是原始图像。
这样做的一个优点是它可以使数据库大小更小。
另一个是多个表可以指向图像而不存储图像的多个副本。