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

问题描述:

我有一个byte[]属性的对象,我想将此值转换为正确的值,以便可以使用T-SQL将其插入到数据库中。如何将字节[]转换为数据以在SQL Server中的varbinary(max)列中插入值?

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

谢谢。

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

// 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(); 
     } 
    } 
} 
+0

您正在调用的“添加”过载被标记为过时。你应该使用'.AddWithValue(“@ data”,cls.data);'或'.Add(“@ data”,SqlDbType.VarBinary).Value = cls.data;' –

+0

@ScottChamberlain,谢谢你通知我。我更新了我的答案 – FLICKER

您想转换为VarBinary

参见以下:

SQL Server Data Type Mappings

简单的例子(设定命令参数)如何在VARBINARY通过

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

T-SQL实例

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

@ScottChamberlain刚刚更新的答案 –

+0

这将是很好的告诉你如何使用参数查询过,如果OP从未使用参数之前,他可能不知道如何使用它。 –

+0

感谢您使用AddWithValue。它帮助到我。 –