我有一个可以添加到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
上得到了一个例外(“列(//无法读取的东西)”)。任何建议?
答案 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
是您查询的输入数据。