我想删除与正在解析的数组的byte[]
匹配的内容:
byte[][] data
我知道如何处理一个简单的byte[]
,它是一个与byte[]
数组不同的故事。
byte[]
,而不是byte[][]
)如何在我的SQL位中使用此参数,例如
....
WHERE d IN @data ?
....
代码:
public static void MyFunction(Transaction aTran, long Id, byte[][] data)
{
string cmdText = ExtendedSQL.SQLQuery;
using (SqlCommand cmd = new SqlCommand(cmdText))
{
cmd.Parameters.Add("@data", SqlDbType.VarBinary, data.Length).Value = data
cmd.Parameters.AddWithValue("@id", Id);
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
}
}
答案 0 :(得分:1)
您可以将byte[][]
作为SqlDbType.VarBinary
存储在数据库中,但似乎只存储byte[]
。
您希望删除db中与您拥有的多个byte[]
匹配的所有数据。
由于它以二进制形式存储,您可能需要循环data[][]
以执行多个查询。
public static void MyHigherLevelFunction(Transaction aTran, long Id, byte[][] data)
{
foreach(byte[] oneData in data)
{
MyFunction(aTran, Id, oneData);
}
}
public static void MyFunction(Transaction aTran, long Id, byte[] data)
{
string cmdText = ExtendedSQL.SQLQuery;
using (SqlCommand cmd = new SqlCommand(cmdText))
{
cmd.Parameters.Add("@data", SqlDbType.VarBinary, data.Length).Value = data
cmd.Parameters.AddWithValue("@id", Id);
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
}
}
SQL看起来像:
....
WHERE d = @data
....