Se con ADO.NET 1.x l'oggetto DataTable era sì importante ma poco utilizzato, con la versione 2.0 è stato dotato di interessanti novità che possono far comodo a chi sfrutta l'accesso disconesso ai dati.
Una delle mancanze principali è quella che senza un DataSet contenitore, in ADO.NET 1.x, una DataTable è in realtà priva di utilità, perchè non ha un metodo ReadXml, ad esempio, nè la possibilità di essere serializzata direttamente.
L'alternativa è dunque quella di passare sempre attraverso un DataSet contenitore, anche se in realtà quest'ultimo conterrà solo una DataTable.
A partire da ADO.NET 2.0 invece sono state aggiunte delle funzionalità che rendono più indipendente la DataTable, come i metodi ReadXML, WriteXML e Merge, già presenti nel DataSet e che ne aggiungo le stesse funzionalità.
In più condivide con il DataSet la possibilità di avere una proprietà RemotingFormat che consente di serializzarne lo stato in vero binario e che segna la possibilità di sfruttare direttamente la DataTable in remoting o web services:
myDataTable.RemotingFormat = SerializationFormat.Binary;
Inoltre è stata aggiunta la possibilità, comoda quando si ha a che fare con dati salvati in Cache o serializzati su disco, di creare un DataReader (esattamente un DataTableReader) a partire da una DataTable, attraverso il metodo CreateTableReader.
Per finire, è stato aggiunto un metodo Load che fa l'esatto contrario, carica cioè il contenuto di un DataReader all'interno di una DataTable. Ecco un esempio:
using (SqlConnection conn = new SqlConnection(connString)) { using (SqlCommand command = new SqlCommand("SELECT * FROM Authors", conn)) { conn.Open(); using (SqlDataReader dr = command.ExecuteReader()) { // riempo la DataTable con il contenuto del DataReader DataTable dt = new DataTable(); dt.Load(dr, LoadOption.OverwriteRow); } } }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.