如何将byte []数组保存到SQL Server数据库中? 此byte []包含HashAlgorithm值。
再次需要数据供以后使用。所以转换它而不是让它恢复原状状态,不是我想要的。
提前致谢!
答案 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];