Introduzione ad ADO.NET

di Francesco Pichierri, in ASP.NET,

In applicazioni client/server gli ambienti di memorizzazione dei dati maggiormente utilizzati sono i database relazionali. In genere in questi ambienti il client si connette al database-server instaurando una connessione permanente durante la quale l'utente effettua tutte le operazioni di manipolazione dei dati.

Questo significa che il database-server deve creare una connessione per ognuno dei client e mantenerla attiva per tutta la sessione di lavoro del client stesso. Tutto funziona correttamente se il software di gestione dei database e l'hardware sono abbastanza potenti da supportare il numero di client connessi, ma soprattutto se la larghezza di banda è adatta a supportare il traffico che viene generato.

Questo diventa molto più critico quando lo scenario è quello di Internet, dovuto alla natura disconnessa del protocollo HTTP, perché per evitare un collasso in termini di prestazioni, la tecnologia di accesso ai dati deve essere in grado di permettere all'utente di accedere ai dati, memorizzarli in una cache e disconnettersi dal database-server.

Una volta manipolati i dati, l'utente deve potersi riconnettere al database-server e poterlo aggiornare.

Ovviamente il .NET Framework che mette a disposizione una serie di classi che implementano una nuova tecnologia di accesso ai dati.

La migliora fondamentale apportata da ADO.NET, rispetto ad ADO, è rappresentata dal modello disconnesso , attraverso l'oggetto DataSet , e da un importante elemento infrastrutturale, il Managed provider .

I namespace di ADO.NET

ADO.NET, mette a disposizione una serie di classi che consentono l'accesso a differenti tipi di database. Essendo parte integrante del .NET Framework e costituite da codice managed, forniscono la massima efficienza possibile

Le classi si trovano in una serie di namespace:

  • System.Data : contiene gli oggetti di base utilizzati per accedere e memorizzare i dati;
  • System.Data.Common : contiene le classi di base utilizzate da altri oggetti;
  • System.Data.Odbc : contiene le classi pubbliche per connettersi/manipolare attraverso driver ODBC;
  • System.Data.OleDb : contiene le classi pubbliche utilizzate per connettersi/manipolare attraverso un provider OLE.DB;
  • System.Data.OracleClient : contiene le classi pubbliche utilizzate per connettersi/manipolare con un database Oracle;
  • System.Data.SqlClient : contiene le classi pubbliche utilizzate per connettersi/manipolare con un database Microsoft SQL Server, utilizzando l'interfaccia nativa TDS (Tabular Data Stream);
  • System.Data.SqlServerCe : contiene le classi pubbliche utilizzate per connettersi/manipolare con una sorgente dati in Windows CE;
  • System.Data.SqlTypes : contiene le classi pubbliche che implementano i tipi di dati che sono differenti dai tipi di dati standard del .NET Framework.

Managed provider

Un Managed provider è qualcosa di molto simile a quello che è conosciuto come OLE-DB Provider. È composto da una serie di classi che vengono utilizzate per connettersi ad un datasource, eseguire comandi, gestire transazioni e manipolare resultset.

A differenza di OLE-DB, il Managed provider è costituito da un più piccolo insieme di interfacce e si basa sui tipi di dati del .NET Framework. Ciascun Managed provider implementa le stesse classi di base così composte:

  • Connection : rappresenta una connessione all'origine dati;
  • Command : rappresenta un comando inviato al database;
  • DataReader : rappresenta un cursore read-only, forward-only, estremamente rapido e leggero;
  • Parameter : rappresenta un parametro da passare all'oggetto Command;
  • Transaction : per la gestione delle transazioni.

A differenza dei Managed provider specifici per database come possono essere SQL Server, Oracle, o MySQL, che sfruttano le classi native e agganciano direttamente a basso livello il database ottenendo un sostanziale aumento delle prestazioni, i managed provider OLE-DB e ODBC servono come ponte di accesso verso un gran numero di database che dispongono di provider OLE-DB e driver ODBC.

Effettuare la connessione al database

Nel modello ad oggetti di ADO.NET, l'oggetto Connection rappresenta una connessione all'origine dati.

Il primo passo da eseguire, prima della creazione dell'oggetto Connection, è quello di importare i riferimenti relativi ai namespace per il managed provider che vogliamo usare.

Nel frammento di codice riportato di seguito, verranno utilizzati i namespace del managed provider OLE-DB:

Imports System.Data
Imports System.Data.OleDb
' stringa di connessione
' provider OLE-DB per database SQL Server
Dim cnString As String = "Provider=SQLOLEDB;Data Source=Server; " & _
"Initial Catalog= Northwind;User ID=uid;Password=pwd;"
' istanza della Connection
Dim cn As New OleDbConnection(cnString)

Una volta che si dispone di un oggetto OleDbConnection con una stringa di connessione valida, è necessario aprire la connessione, con una chiamata al metodo Open, per instaurare una comunicazione con il database:

cn.Open()

Per chiudere un oggetto Connection, è necessaria una chiamata al metodo Close:

cn.Close()

L'oggetto Connection, come molte altre classi ADO.NET, espone un metodo Dispose. Richiamando questo metodo, sarà possibile liberare le risorse che precedono la Garbage Collection e, inoltre, sarà richiamato in modo implicito anche il metodo Close.

cn.Dispose()
3 pagine in totale: 1 2 3
Contenuti dell'articolo

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