如何将Byte []转换为数据以在SQL Server的varbinary(max)列中插入值?

Álv*_*cía 3 c# t-sql sql-server ado.net

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

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

谢谢.

Wil*_*ras 7

您想要转换为VarBinary.

请参阅以下内容:

SQL Server数据类型映射

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

byte[] data;
command.Parameters.Add("@data", SqlDbType.VarBinary).Value = data;
Run Code Online (Sandbox Code Playgroud)

如何传入varbinary的T-SQL示例

CREATE PROCEDURE YourStoredProc
    @data varbinary(max)
AS
BEGIN
  -- your code
END
Run Code Online (Sandbox Code Playgroud)


FLI*_*KER 6

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

// 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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Kam*_*ton 5

生成原始 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();
    }
Run Code Online (Sandbox Code Playgroud)