将字节[]保存到C#的SQL Server数据库中
问题描述:
如何将byte []数组保存到SQL Server数据库中? 该字节[]包含一个HashAlgorithm值。将字节[]保存到C#的SQL Server数据库中
数据需要再次使用以备后用。所以转换它,而不是恢复到原来的状态,是不是我想要的。
在此先感谢!
答
你应该能够编写这样的事:
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到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表中的VARBINARY
类型的列Content
作为字节流,您可以读取b以后再回答1:1。
答
使用VARBINARY
答
Varbinary或CHAR - 将值转换为十六进制。我经常使用散列值来做这件事,因为它可以让我轻松地查看和比较它们(在开发期间在rintouts上),而且开销很小。
很好的答案。但是,根据这个值是一个散列的说法,它有可能是恒定的。如果是这样,请考虑使用具有该长度的二进制代替varbinary。 – 2010-10-30 08:01:25
@Sean Reilly:true - 但不同的哈希算法也会产生不同长度的哈希值,所以您可能希望使用具有合适的最大长度的VARBINARY来容纳所有变体 – 2010-10-30 08:04:47
@marc_s我将使用linq。我必须做SqlDbType.VarBinary吗? – Yustme 2010-10-30 08:25:08