0

我有一个图片应用程序,可以将一些信息添加到 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;
}

但是我在我的 .. 上遇到了一个异常,例如 ("column (//something unreadable) not found") 。有das.Tables[0].Select command什么建议吗?

4

2 回答 2

1

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

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

于 2013-06-01T07:09:31.833 回答
1

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

更新

我可能错了。

尝试传递参数如下?

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

buffer查询的输入数据在哪里。

于 2013-06-01T07:11:47.277 回答