有没有办法将C#字符串插入SQL varbinary列?

问题描述:

我在C#中使用SqlConnectionSqlCommand将字符串行(通过Parameters.AddWithValue)插入到SQL Server中。我需要插入的一列是Varbinary。有没有办法在C#或SQL Server中进行转换?有没有办法将C#字符串插入SQL varbinary列?

+5

你的意思是像'Encoding.UTF8Encoding.ToByteArray(串)'? – 2013-04-10 20:57:21

+0

你可以发布你的代码以及你想要进行这种转换的代码中的什么和在哪里发生的例子 – MethodMan 2013-04-10 20:57:50

+0

难道你不能在SQL中将字符串转换为varbinary吗?或者你想把它作为原始字符串存储在数据库中? – Brian 2013-04-10 20:59:26

根据this answer,您可以使用CONVERT函数将字符串插入到VARBINARY列中。确保您使用正确的编码,正如答案中所讨论的那样。

insert Table_2 (Test) values(CONVERT(varbinary(30), N'this is a test')) 
select * from Table_2 
select CONVERT(nvarchar(30), test) from Table_2 

所以C#代码会看起来像

// Get from config 
    string connectionString = ""; 

    using (var conn = new SqlConnection(connectionString)) 
    { 
     string sql = "insert Table_2 (Test) values(CONVERT(varbinary(30), @nvarcharParam))"; 
     using (var cmd = new SqlCommand(sql, conn)) 
     { 
      var param = cmd.Parameters.AddWithValue("nvarcharParam", "This is a test"); 
      param.DbType = DbType.String; 

      cmd.ExecuteNonQuery(); 
     } 
    }