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.
Approfondimenti
I più letti di oggi
- annunciato #netstandard 2.1. .NET Core lo supporterà a partire da #netcore3, così come le prossime versione di #xamarin, #mono e #unity.il supporto per #netfx 4.8, invece, non ci sarà. https://aspit.co/bq2
- Annunciato Silverlight 4 RC e Windows Phone Developer Tools
- Speciale Razor: il nuovo view engine di WebMatrix e ASP.NET MVC
- Speciale Windows Store app: costruire app con WinRT per Windows 8
- Gestire lo stato all'interno di un class component di ReactJS
- Inserimenti bulk su database con la classe SqlBulkCopy di ADO.NET 2.0
- disponibile su MSDN la versione RTM di #VS2013 Update 2! https://aspit.co/auj #msTechEd