#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
- Prima beta pubblica per il SP1 del .NET Framework 3.5 e VS 2008
- #950 - Il supporto al pulsante back del browser con ASP.NET AJAX 3.5 SP 1
- Cosa c'è in ASP.NET 3.5 Service Pack1
- #944 - Inviare file di grandi dimensioni con un HttpHandler di ASP.NET
- #920 - Utilizzare HttpModule in modalità asincrona
- BackgroundWorker e le windows forms
- I nuovi controlli di ASP.NET 3.5: LinqDataSource, ListView e DataPager
- Service Oriented e i tanti file di configurazione.
- #84 - Usare DataGrid, Calendar e DatePicker in WPF
- .NET Framework 3.5 e Visual Studio 2008
- Real Code Birthday: 10 anni!
- La regressione ed ASP.NET 3.5 SP 1
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.








Stampa
Snippet
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!