2013-06-04 160 views
1

我有一个将图片保存在SQL Server数据库中的C#应用​​程序。 SQL Server将图片保存在varbinary(max)类型的列中。该应用程序将byte[]转换为在我的屏幕上显示图片。SQL Server图片数据库

我想要做的是检查图片是否被添加过。首先是由数据集保存的整个数据库。然后,我试图通过检查图像的字节数组的相等性来比较图片。但它不起作用。因为(取决于我的理解)图片的字节数组(我打算通过openfiledialog添加),与图片的字节数组(即来自数据集)不匹配,即使它们都是相同的图片(同名,相同的位置,相同的大小等)。

这就带出了我的.Net,C#,SQL Server和ado.net学习中更重要的问题。在这种情况下,哪种方式更适合?检查业务层或数据层上的数据存在性? (对不起,我的英文不好)

+0

你是正确的,同一图像的不同表示方式在直接测试中不相同。您需要始终可以比较的图像的一致表示。 Tom Studee提出了这样一种方法(通过之前的文章)。 – DonBoitnott

回答

3

你可能要考虑存储图像的md5散列,并用它作为比较。看到这个答案:https://stackoverflow.com/a/8802486/214919

+0

谢谢汤姆。它的工作。但我在等待我的第二个问题的答案。 –

+0

@SertanPekel它取决于应用程序的要求,但通常我会建议检查域/业务层中是否存在业务对象。根据设计,检查可能会从某种类型的缓存中检索对象,或者启动从数据层检索对象的请求。 –