ADO.NET è una libreria di classi il cui fine è di consentire una interazione con Database, file testo, file XML, ecc.
Data Provider
ADO.NET consente ad un'applicazione web di scambiare informazioni con diversi tipi di fonti dati o Database. Tuttavia, non vi è un insieme unico di classi, per riferirsi ai diversi database, ma per ogni tipo di database è stato implementato un diverso Data Provider, cioè librerie di classi, che definiscono un modo comune per interagire con specifiche sorgenti dati o protocolli.
I pricipali provider sono i seguenti:
|
Provider Name
|
API prefix
|
Data Source Description
|
|
ODBC Data Provider
|
Odbc
|
Sorgenti dati con interfaccia ODBC
|
|
OleDb Data Provider
|
OleDb
|
Sorgenti dati che espone interfaccie OleDb (Access o Excel)
|
|
Oracle Data Provider
|
Oracle
|
Per database Oracle
|
|
SQL Data Provider
|
Sql
|
Per interfaccia con Microsoft SQL Server.
|
|
|
|
|
Namespace
Per utilizzare gli oggetti ADO.NET associati al database Sql-Server occorre dichiarare i seguenti namespace:
using System;
using System.Data;
using System.Data.SqlClient;
ADO.NET Objects
ADO.NET comprende diversi oggetti che possono essere utilizzati per interfacciarsi con un database SQL Server. I più importanti sono:
-
SqlConnection Object
-
SqlCommand Object
-
SqlParameter Object
-
SqlDataReader Object
-
SqlTransaction Object
-
DataSet Object Sql
-
DataAdapter Object
Per interrogare un base dati è necessario disporre di una connessione al database. Il fine è di indicare Server, Nome del database, nome utente, password ed altri parametri necessari per il collegamento al database. L’oggetto connessione viene utilizzato dai comandi per specificare su quale database occorre eseguire i comandi.
Una connection reference list è disponibile sul sito: http://www.connectionstrings.com/
Le Properties della Sql Connection classa sono:
ConnectionString Connection string al database
ConnectionTimeout Timeout in secondi della connessione
Database Nome del database
DataSource Nome del Server
PacketSize Dimensione dei packets usati per comunicare con il Server
ServerVersion Version of SQL
State Stato della connessione
WorkstationId Identificatore NetBIOS della machine che ospita il Web form
I Metodi della Sql Connection classa sono:
BeginTransaction() Pone la connessione in una transazione
ChangeDatabase() Consente di associare ad una connessione un differente database
Close() Chiude la connessione
CreateCommand() Ritorna un nuovo command object
Open() Apre una connessione al database
Connection String
Il codice che segue è un esempio di connection string per il database SqlEspress 2005
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source=.\SQLExpress;Integrated security=True;
User Instance=True;AttachDBFilename=|DataDirectory|Idea05.mdf”;
Il significato dei diversi parametri è il seguente:
-
Data Source è il machine name del computer su cui è running sql server
-
Integrated security indica che occorre usare le attuali credenziali degli utenti di windows (username e password) per accedere a sql server. I possibili valori sono true, false e sspi (indica connessione sicura).
-
User Instance, durante la connessione crea una nuova local SQL Server Express instance. Funziona solo quando si usa l’autenticazione di Windows. Lo scopo è di poter creare una full rights SQL Server instance per un utente con limitati diritti amministrativi sul computer.
-
AttachDBFilename, Path completo del nome del principale file del database
Connection Timeout
E’ una property read-only che contiene il timeout in secondi della connessione. Il valore di default è 30 sec. Per modificare questo parametro occorre indicare il valore nella connection string.
SqlConnection conn = new SqlConnection(
ConnString
);
msg.Text = conn.ConnectionTimeout;
Database
E’ una property read-only che contiene il nome del database. Per cambiare il valore occorre usare
il metodo ChangeDatabase() oppure modificare la connection string.
SqlConnection conn = new SqlConnection(
ConnString
);
msg.Text = conn.Database;
State
La property State consente di ottenere lo stato della connessione.
Sono possibili i seguenti valori:
Broken, Closed, Connecting, Executing, Fetching, and Open. Questi valori sono definite nel namespace System.Data.ConnectionState
SqlConnection conn = new SqlConnection(
ConnString
);
msg.Text = conn.State.ToString();
Transaction
Consente di eseguire diverse istruzioni SQL in modo consistente. Ad esempio, a volte occorre aggiornare diverse tabelle in un database (con Insert, update, ecc.) in modo consistente, nel senso che se si verifica un errore occorre annullare tutte le operazioni.
SqlConnection conn = new SqlConnection(
ConnString
);
Conn.Open();
SqlTransaction tx = conn.BeginTransaction();
// Esegue le diverse operazioni …
tx.Commit();
conn.Close();
ChangeDatabase
Consente di cambiare database senza dover creare una nuova connessione.
SqlConnection conn = new SqlConnection(
ConnString
);
conn.Open();
conn.ChangeDatabase("dbNew");
conn.Close()
CreateCommand
Ritorna una nuova instanza di un oggetto SqlCommand
SqlConnection conn = new SqlConnection(
ConnString
);
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "DELETE FROM Prodotti";
Comunicare con un database significa indicare le operazioni che si desiderano fare, mediante la classe SqlCommand. Questa classe viene usata per eseguire operazioni su un database o per ottenere informazioni. In altri termini, si utilizza un Object Command per inviare istruzioni SQL alla base di dati. Un oggetto comando utilizza l'oggetto connessione, per conoscere con quale database comunicare.
È possibile utilizzare SqlCommand, per eseguire un comando direttamente oppure mediante un riferimento ad un oggetto SqlDataAdapter, in cui sono memorizzati una serie di comandi da eseguire su un insieme di dati.
Properties
CommandText Contiene il testo di un commando sql
CommandTimeout Timeout in secondi per l