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
https://www.aspitalia.com/liste/usag/script.aspx?ID=523
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.