从C#将byte []保存到SQL Server数据库中

时间:2010-10-30 07:41:17

标签: c# sql-server bytearray

如何将byte []数组保存到SQL Server数据库中? 此byte []包含HashAlgorithm值。

再次需要数据供以后使用。所以转换它而不是让它恢复原状状态,不是我想要的。

提前致谢!

4 个答案:

答案 0 :(得分:66)

你应该可以这样写:

string queryStmt = "INSERT INTO dbo.YourTable(Content) VALUES(@Content)";

using(SqlConnection _con = new SqlConnection(--your-connection-string-here--))
using(SqlCommand _cmd = new SqlCommand(queryStmt, _con))
{
   SqlParameter param = _cmd.Parameters.Add("@Content", SqlDbType.VarBinary);
   param.Value = YourByteArrayVariableHere;

   _con.Open();
   _cmd.ExecuteNonQuery();
   _con.Close();
}

使用Linq-to-SQL,你会写这样的东西:

using(YourDataContextHere ctx = new YourDataContextHere())
{
   SomeClassOfYours item = new SomeClassOfYours();

   item.ByteContent = (your byte content here);

   ctx.SomeClassOfYourses.InsertOnSubmit(item);
   ctx.SubmitChanges();
}

这会将您的byte[]插入SQL Server表格中Content类型的列VARBINARY作为字节流,稍后您可以再次以1:1的形式回读。 / p>

答案 1 :(得分:6)

使用VARBINARY

答案 2 :(得分:2)

Varbinary或CHAR - 将值转换为十六进制。我经常使用哈希值这样做,因为它允许我轻松地查看和比较它们(在rintouts上,在开发期间),并且开销很小。

答案 3 :(得分:0)

使用Dapper,您可以像这样轻松地保存HTML代码:

using (var con = DapperConnection.Con)
{
    string firstValue = "any text...";
    string secondValue = "HTML code maybe ?";

    // Convert your string into byte array:
    byte[] htmlCode = Encoding.ASCII.GetBytes(secondValue);

    // Define your insert query and execute it:
    con.Execute($@" INSERT INTO [dbo].[YourTableName]
                    ( [firstColumnName], [secondColumnName] )
                    VALUES
                    ( {firstValue}, COMPRESS(@HTML) )", new { HTML = htmlCode });
}

然后您可以像这样从数据库中解压缩它:

SELECT [firstColumnName], CONVERT(varchar(MAX), DECOMPRESS([secondColumnName])) FROM [YourTableName];