首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ByteArray of ByteArray作为SQL参数

ByteArray of ByteArray作为SQL参数
EN

Stack Overflow用户
提问于 2015-08-12 09:22:19
回答 1查看 1.8K关注 0票数 0

我想删除与正在解析的数组的任何byte[]匹配的内容:

代码语言:javascript
复制
byte[][] data

我知道如何处理一个简单的byte[],这是一个与byte[]数组不同的故事。

  • 如何添加这样的参数(在我的示例中,只有byte[],而不是byte[][])
  • 如何在SQL位中使用此参数,如下所示 ……D IN @data?.

代码:

代码语言:javascript
复制
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();
        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-12 09:43:20

您可以将byte[][]作为SqlDbType.VarBinary存储在数据库中,但似乎只存储byte[]

您希望删除与多个byte[]匹配的db中的所有数据。

由于它是以二进制形式存储的,您可能需要在data[][]上循环执行多个查询。

代码语言:javascript
复制
    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的外观如下:

代码语言:javascript
复制
    .... 
    WHERE d = @data  
    ....
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31961028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档