正在检查数据集中的byte[]

本文关键字:byte 集中 数据集 检查 数据 | 更新日期: 2023-09-27 18:16:26

我有一个应用程序的图片,可以添加到sql数据库与一些信息。我保持图片作为varbinary在sql表。我想确认一下图片之前是否添加过我的代码如下:

byte[] img = File.ReadAllBytes(item);
//that converts the file to bytearray
string str = ByteString(img); 
//ByteString is a method that converts bytearray to string (It works)
DataRow[] satirlar = das.Tables[0].Select("PicBinary=" + str); 
//sql table keeps picture as varbinary in PicBinary Column
if (satirlar[0]!=null)
{
    //codes
    continue;
}

但我得到一个异常("列(//不可读的)没有找到")在我的das.Tables[0].Select command ..任何建议吗?

正在检查数据集中的byte[]

我的第一个想法是"不可读的东西"是图像文件内容的字符串表示,Select将表达式"PicBinary=" + str的右侧视为列名,因为它没有引用。

也就是说,我不确定DataTableSelect方法是否允许您以这种方式进行比较。您可能希望查看LINQ to DataSet(如本答案所建议的),以便对文件中的数据和该列中每个单元格的内容进行逐字节的比较。

在传递select的字符串变量时需要添加正确的Escape Sequences

:

我可能错了。

按如下方式传递参数?

SqlParameter parameter = new SqlParameter("@PicBinary", SqlDbType.VarBinary, buffer.Length);
parameter.Value = buffer;
sqlCommand.Parameters.Add(parameter);

其中buffer是查询的输入数据