DbProviderFactory

Eintrag zuletzt aktualisiert am: 07.03.2004

Stark vereinfacht wird in ADO.NET 2.0 auch die Möglichkeit, unabhängig von einer konkreten Datenbank zu programmieren. Durch die Klassen DbProviderFactory, DbConnection, DbCommand sowie die bereits vorher vorhandene DbDataAdapter-Klasse kann man nun die Informationen zum Data-Provider in einem zur Laufzeit austauschbaren Zeichenkette halten (Listing 1). Die installierten Provider können über System.Data.Common.DbProviderFactories.GetFactoryClasses() aufgelistet werden (Listing 2).

Hinweis: Die Klassen DbConnection und DbCommand sind die neuen Basisklassen für alle providerspezifischen Connection- und Command-Klassen

const string CONNSTRING = "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Northwind;Data Source=ESSEN";
const string SQL = "Select * from Employees";
DbProviderFactory provider = DbProviderFactories.GetFactory("System.Data.SqlClient");
DbConnection connection = provider.CreateConnection();
connection.ConnectionString = CONNSTRING;
DbDataAdapter adapter = provider.CreateDataAdapter();
adapter.Connection = connection;
DbCommand command = provider.CreateCommand();
command.CommandText = SQL;
DataSet ds = new DataSet();
adapter.SelectCommand = command;
adapter.Connection = connection;
adapter.Fill(ds);
Console.WriteLine(ds.Tables[0].Rows.Count);
Listing 1: Datenbankunabhängige Programmierung mit der DbProviderFactory

DataTable providers = System.Data.Common.DbProviderFactories.GetFactoryClasses();

foreach (DataRow provider in providers.Rows)
{
foreach (DataColumn c in providers.Columns)
Console.WriteLine(c.ColumnName + ":" + provider[c]);
Console.WriteLine("---");
}
Listing 2: Auflisten der installierten ADO.NET-Datenbanktreiber