Scrittura di codice comune per i provider di dati .NET Framework

Con le interfacce comuni fornite da ADO.NET è possibile scrivere codice che potrà essere utilizzato con qualsiasi provider di dati .NET Framework.

Quando si scrive codice da utilizzare per più provider di dati .NET Framework, è necessario prestare particolare attenzione ad eventuali sintassi specifiche di un determinato provider. Nella sintassi SQL ad esempio sono presenti delle differenze a seconda dell'origine dati a cui si accede. Se si isolano i comandi SQL come costanti di stringa, sarà più semplice riutilizzare il codice nel caso in cui si opti per un provider di dati .NET Framework diverso.

È inoltre importante mantenere l'ordine con cui i parametri vengono creati nel codice. L'ordine dei parametri non è rilevante per il provider di dati .NET Framework per SQL Server, poiché i parametri vengono identificati in base al nome. Nel provider di dati .NET Framework per OLE DB i valori dei parametri vengono invece assegnati in base all'ordine con cui i parametri vengono aggiunti all'insieme di parametri. È quindi consigliabile mantenere sempre l'ordine dei parametri nel codice.

Il codice dell'esempio che segue funzionerà correttamente sia con il provider di dati .NET Framework per SQL Server, che con il provider di dati .NET Framework per OLE DB o con provider di dati .NET Framework per ODBC.

' You can use either:
'  Dim myConn As IDbConnection = New SqlConnection
' or:
'  Dim myConn As IDbConnection = New OleDbConnection
' or:
'  Dim myConn As IDbConnection = New OdbcConnection
' or:
'  Dim myConn As IDbConnection = New OracleConnection

Dim myCommand As IDbCommand = myConn.CreateCommand()
myCommand.CommandText = "SELECT * FROM Customers"
Dim myReader As IDataReader = myCommand.ExecuteReader()

Do While myReader.Read()
  Console.WriteLine("{0}" & vbTab & "{1}", myReader.GetString(0), myReader.GetString(1))
Loop
[C#]
// You can use either:
//  IDbConnection myConn = new SqlConnection();
// or:
//  IDbConnection myConn = new OleDbConnection();
// or:
//  IDbConnection myConn = new OdbcConnection();
// or:
//  IDbConnection myConn = new OracleConnection();

IDbCommand myCommand = myConn.CreateCommand();
myCommand.CommandText = "SELECT * FROM Customers";
IDataReader myReader = myCommand.ExecuteReader();

while (myReader.Read())
  Console.WriteLine("{0}\t{1}", myReader.GetString(0), myReader.GetString(1));

Vedere anche

Cenni preliminari su ADO.NET | Architettura di ADO.NET | Utilizzo di provider di dati .NET Framework per accedere ai dati