#555 - Serializzare in binario su database una classe .NET

Nello script #523 si è visto come serializzare una classe in formato XML per poterla memorizzare in un file su disco. In questo script vedremo come, invece, serializzare una classe in formato binario in una tabella di un nostro database.
E' sufficiente creare una tabella con un campo di tipo "Blob" o "Oggetto Ole". Quindi per l'inserimento della stessa classe dello script #523 dovremo utilizzare questo codice:

private void ButtonSace_Click(object sender, System.EventArgs e)
{
try
{
SampleClass sc = new SampleClass();
sc.Description = description.Text;
sc.Date = DateTime.Now;


MemoryStream ms=new MemoryStream();
BinaryFormatter bf=new BinaryFormatter();
bf.Serialize(ms,sc);
ms.Seek(0,0);
byte[] FileByteArray= new byte[ms.Length];
ms.Read(FileByteArray,0,(int)ms.Length);

// Accesso al database
using (OleDbConnection myconnection=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+Request.MapPath("database.mdb")))
{
string strsql="insert into Test(content) values(?)";
OleDbCommand mycommand = new OleDbCommand(strsql,myconnection);
mycommand.Parameters.Add("@content",OleDbType.Binary,(int)ms.Length).Value=FileByteArray;
myconnection.Open();
mycommand.ExecuteNonQuery();
}
Response.Write ("Classe memorizzata!");
}
catch (Exception ex)
{
Response.Write ("Errore: "+ex.Message);
}
}


Per recuperare la classe invece si dovrà usare questo script:

private void ButtonLoad_Click(object sender, System.EventArgs e)
{
string strsql="Select content from Test";
using (OleDbConnection myconnection=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+Request.MapPath(db)))
{
myconnection.Open();
OleDbCommand mycommand = new OleDbCommand(strsql,myconnection);
OleDbDataReader re=mycommand.ExecuteReader(CommandBehavior.CloseConnection);

BinaryFormatter bf=new BinaryFormatter();
SampleClass sc = null;

if (re.Read())
{
sc=(SampleClass)bf.Deserialize(new MemoryStream((byte[])re["content"]));
Response.Write("Tutto ok!");
}
else
Response.Write("Non ho trovato nulla!");
}
}


Per maggiori informazioni si veda:
#523 - Salvare una classe .NET su file con la serializzazione
http://www.aspitalia.com/liste/usag/script.aspx?ID=523


Approfondimenti
Commenti

Esprimi il tuo giudizio su questo script:

Per procedere devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.