2010-10-30 69 views
35

如何将byte []数组保存到SQL Server数据库中? 该字节[]包含一个HashAlgorithm值。将字节[]保存到C#的SQL Server数据库中

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

在此先感谢!

回答

56

你应该能够编写这样的事:

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。

+1

很好的答案。但是,根据这个值是一个散列的说法,它有可能是恒定的。如果是这样,请考虑使用具有该长度的二进制代替varbinary。 – 2010-10-30 08:01:25

+2

@Sean Reilly:true - 但不同的哈希算法也会产生不同长度的哈希值,所以您可能希望使用具有合适的最大长度的VARBINARY来容纳所有变体 – 2010-10-30 08:04:47

+0

@marc_s我将使用linq。我必须做SqlDbType.VarBinary吗? – Yustme 2010-10-30 08:25:08

2

Varbinary或CHAR - 将值转换为十六进制。我经常使用散列值来做这件事,因为它可以让我轻松地查看和比较它们(在开发期间在rintouts上),而且开销很小。

相关问题