检查数据集中的byte []

时间:2013-06-01 06:55:21

标签: c# dataset byte

我有一个可以添加到sql数据库中的图片的应用程序,其中包含一些信息..我在sql表中将图片保存为varbinary。我想检查之前是否添加了图片。我的代码如下:

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上得到了一个例外(“列(//无法读取的东西)”)。任何建议?

2 个答案:

答案 0 :(得分:1)

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

那就是说,我不确定DataTable的{​​{1}}方法是否允许您以这种方式进行比较。您可能希望查看LINQ to DataSet(根据this回答的建议)对文件中的数据和该列中每个单元格的内容进行逐字节比较。

答案 1 :(得分:1)

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

<强>更新

我可能错了。

尝试传递参数如下?

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

其中buffer是您查询的输入数据。