6

有谁知道如何在 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 在移动平台上提供了一个合理的选择,我将考虑切换。

4

3 回答 3

5

这是一篇 MSDN 文章,解释了如何:

http://support.microsoft.com/kb/318639

不幸的是,这个例子是用 VB 编写的,但我相信你可以知道如何去做。

我会说二进制数据类型可以很好地存储图像。

于 2010-04-14T14:44:51.830 回答
5

你为什么不使用图像类型?是sql server ce支持的类型的描述。

图像- 最大长度为 2^30 – 1 (1,073,741,823) 字节的可变长度二进制数据。

于 2010-05-04T14:27:32.590 回答
1

这不是您问题的直接答案,但我已经成功地将图像的文件路径(例如:C:\images\image1.png)作为字符串值存储在数据库中,而不是原始图像。

这样做的一个优点是它使数据库大小更小。

另一个是多个表可以指向图像而不存储图像的多个副本。

于 2010-04-14T15:07:27.940 回答