【问题标题】:How convert a Byte[] to a data to insert a value in a varbinary(max) column in SQL Server?如何将 Byte[] 转换为数据以在 SQL Server 的 varbinary(max) 列中插入值?
【发布时间】:2017-09-08 14:07:27
【问题描述】:

我有一个具有byte[] 属性的对象,我想将此值转换为正确的值,以便可以使用 T-SQL 将其插入到数据库中。

但我不知道如何将 byte[] 转换为插入的 T-SQL 的正确值。

谢谢。

【问题讨论】:

    标签: c# sql-server tsql ado.net


    【解决方案1】:

    创建一个控制台应用程序项目并尝试此代码

    // Sample Class
    public class MyClass
    {
        public byte[] data;
    }
    
    // Main 
    static void Main(string[] args)
    {
        MyClass cls = new MyClass();
        using (SqlConnection cn = new SqlConnection("CONNECTION STRING"))
        {
            cn.Open();
            using (SqlCommand cmd = new SqlCommand("insert into MyTable values (@data)", cn))
            {
                cmd.Parameters.AddWithValue("@data", cls.data);
                cmd.ExecuteNonQuery();
            }
        }
    }
    

    【讨论】:

    • 您正在调用的Add 的重载被标记为已过时。您应该使用.AddWithValue("@data", cls.data);.Add("@data", SqlDbType.VarBinary).Value = cls.data;
    • @ScottChamberlain,感谢您通知我。我更新了我的答案
    【解决方案2】:

    您想转换为VarBinary

    请参阅以下内容:

    SQL Server Data Type Mappings

    简单示例(设置命令参数)

    byte[] data;
    command.Parameters.Add("@data", SqlDbType.VarBinary).Value = data;
    

    如何传入 varbinary 的 T-SQL 示例

    CREATE PROCEDURE YourStoredProc
        @data varbinary(max)
    AS
    BEGIN
      -- your code
    END
    

    【讨论】:

    • 如果 OP 在可能不知道如何使用之前从未使用过参数,那么最好也展示一下您如何在查询中使用参数。
    • 感谢您使用 AddWithValue。它对我有帮助。
    • @ÁlvaroGarcía 这是使用 AddWithValue 的错误方法,我已将其更正为使用正确的函数。
    【解决方案3】:

    生成原始 varbinary 以插入数据库(复制粘贴案例)

    string ToVarbinary(byte[] data)
        {
            var sb = new StringBuilder((data.Length * 2) + 2);
            sb.Append("0x");
    
            for (int i = 0; i < data.Length; i++)
            {
                sb.Append(data[i].ToString("X2"));
            }
    
            return sb.ToString();
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-15
      • 2021-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多