Le novità della classe DataTable in ADO.NET 2.0

di Daniele Bochicchio, in ASP.NET 2.0, ADO.NET, C#,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

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