如何在SQL Server数据库中存储图像

时间:2014-12-07 03:27:11

标签: c# sql-server wpf image

目前,我正在制作一个WPF + C#应用程序。我应该将图像存储在服务器上,但我不知道是否应该将图像存储为二进制或base64。

上述哪种方法最好?

我将SQL Server用于商店数据库!

三江源!

2 个答案:

答案 0 :(得分:4)

微软研究院的一篇非常好的论文名为To Blob or Not To Blob

经过大量的性能测试和分析后得出的结论是:

  • 如果您的图片或文档的大小通常低于256K,则将它们存储在数据库VARBINARY列中效率更高

  • 如果您的图片或文档的大小通常超过1 MB,则将它们存储在文件系统中效率更高(并且使用SQL Server 2008的FILESTREAM属性,它们仍处于事务控制之下,并且属于数据库)

  • 介于这两者之间,取决于您的使用情况,这是一个小小的挑战

如果您决定将图片放入SQL Server表格,我强烈建议您使用单独的表格存储这些图片 - 不要将图片存储在“常规”表格中 - 将它们保存在单独的表格中。这样,常规表可以保持精简,平均且非常高效,假设您不总是需要选择图像作为查询的一部分。

但是如果您选择将图像存储在SQL Server数据库中, 将它们直接存储为二进制值 - 不要 Base64将它们全部编码!这很疯狂,并且会大大夸大你的图像尺寸,没有真正的好处。

答案 1 :(得分:-1)

您可以将文件保存在特定文件夹中,并将路径保存在数据库中,而不是存储图像的字节