1

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

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

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

4

2 回答 2

3

您可能需要考虑存储图像的 md5 哈希,并将其用作比较。看到这个答案:https ://stackoverflow.com/a/8802486/214919

于 2013-06-04T16:56:36.077 回答
0

很多时候,我们所做的就是在表中保存一些额外的字段。就像“原始文件名”一样,它是上传文件的名称。文件大小、用户以及如上所述的图像的 md5 哈希值。这样,我们可以通过在业务逻辑的早期进行简单比较来节省大量工作,并且只允许在您尝试执行的级别进行完整的繁重工作比较。

于 2020-06-28T12:42:00.613 回答