2010-10-30 2 views

Répondre

56

Vous devriez être en mesure d'écrire quelque chose comme ceci:

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, vous écririez quelque chose comme ceci:

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

    item.ByteContent = (your byte content here); 

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

Ce insère votre byte[] dans une colonne Content de type VARBINARY dans votre table SQL Server en tant que flux d'octets, que vous pouvez lire b Ack 1: 1 à nouveau plus tard. Varbinary ou CHAR - avec la valeur convertie en hexadécimal.

+1

Bonne réponse. Cependant, basé sur l'affirmation que la valeur est un hachage, il est possible qu'elle soit de longueur constante. Si c'est le cas, pensez à utiliser binary avec cette longueur au lieu de varbinary. –

+2

@Sean Reilly: vrai - mais différents algorithmes de hachage produisent également des hachages de longueurs différentes, donc vous pouvez utiliser un VARBINARY avec une longueur maximale appropriée pour accommoder toutes les variations –

+0

@marc_s j'utiliserai linq. dois-je faire SqlDbType.VarBinary? – Yustme

2

Je fais cela assez souvent avec des valeurs de hachage parce que cela me permet de les VOIR et de les COMPARER facilement (sur des rintouts, pendant le développement), et les frais généraux sont minimes.

Questions connexes