2010-10-30 53 views
35

¿Cómo puedo guardar una matriz de bytes [] en una base de datos de SQL Server? Este byte [] contiene un valor HashAlgorithm.Guardar byte [] en una base de datos de SQL Server desde C#

Los datos se necesitan nuevamente para un uso posterior. Así que convertirlo y NO recuperarlo en su estado original, no es lo que quiero.

¡Gracias de antemano!

Respuesta

56

Usted debe ser capaz de escribir algo como esto:

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(); 
} 

mediante LINQ to SQL, que iba a escribir algo como esto:

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

    item.ByteContent = (your byte content here); 

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

Eso insertará su byte[] en una columna Content del tipo VARBINARY en su tabla de SQL Server como un flujo de bytes, que puede leer b Ack 1: 1 de nuevo más tarde.

+1

Buena respuesta. Sin embargo, según la afirmación de que el valor es un hash, es posible que sea de longitud constante. Si es así, considere usar binary con esa longitud en lugar de varbinary. –

+2

@Sean Reilly: cierto, pero los algoritmos de hash diferentes también producen hashes de longitud diferentes, por lo que es posible que desee utilizar un VARBINARY con una longitud máxima adecuada para acomodar todas las variaciones –

+0

@marc_s voy a estar utilizando linq. ¿Tengo que hacer SqlDbType.VarBinary? – Yustme

2

Varbinary o CHAR - con el valor convertido a un hex. Lo hago bastante a menudo con valores hash porque me permite VER y COMPARARlos fácilmente (en rintouts, durante el desarrollo), y la sobrecarga es mínima.

Cuestiones relacionadas