我有一个C#应用程序,可以将图片保存在SQL Server数据库中。 SQL Server将图片保存在varbinary(max)
类型的列中。该应用转换byte[]
以在屏幕上显示图片。
我想要做的是检查图片是否之前添加过。首先是数据集保存的整个数据库。然后,我尝试通过检查图像的字节数组的相等性来比较图片。但它不起作用。因为(取决于我的理解)图片的字节数组(我打算通过openfiledialog添加)与图片的字节数组(来自数据集)不匹配,即使它们都是相同的图片(同名,相同的位置,相同的大小等..)
这对我的.Net,C#,SQL Server和ado.net学习提出了更重要的问题。在这种情况下,哪种方式更合适?要检查业务层或数据层上的数据是否存在? (对不起,我的英文不好)
答案 0 :(得分:3)
您可能需要考虑存储图像的md5哈希值,并将其用作比较。请参阅此答案:https://stackoverflow.com/a/8802486/214919
答案 1 :(得分:0)
很多时候我们要做的是在表中保存一些其他字段。类似于“原始文件名”,它是上传文件的名称。文件大小,用户以及如上所述的图像的md5哈希值。这样,我们可以在业务逻辑的早期进行简单比较,从而节省大量工作,并且只允许在您尝试执行的级别进行完整的繁重工作负载比较。