Comment puis-je enregistrer un tableau d'octets [] dans une base de données SQL Server? Cet octet [] contient une valeur HashAlgorithm.
Les données sont à nouveau nécessaires pour une utilisation ultérieure. Donc, le convertir et ne pas le remettre dans son état d'origine, ce n'est pas ce que je veux.
Merci d'avance!
Vous devriez pouvoir é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();
}
En utilisant 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();
}
Cela insérera votre byte[]
dans une colonne Content
de type VARBINARY
dans votre table SQL Server sous forme de flux d'octets, que vous pourrez relire 1: 1 plus tard.
Utilisez VARBINARY
Varbinaire ou CHAR - avec la valeur convertie en hexadécimal. Je le fais assez souvent avec des valeurs de hachage car cela me permet de les VOIR et de LES COMPARER facilement (lors des rintouts, pendant le développement), et la surcharge est minime.
En utilisant Dapper, vous pouvez enregistrer facilement du code HTML comme ceci:
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 });
}
Vous pouvez ensuite le DÉCOMPRIMER à partir d'une base de données comme celle-ci:
SELECT [firstColumnName], CONVERT(varchar(MAX), DECOMPRESS([secondColumnName])) FROM [YourTableName];