This post originated from an RSS feed registered with .NET Buzz
by -.
Original Post: Liste der installierten ADO.NET Provider abrufen
Feed Title: Norbert Eder - Living .NET
Feed URL: http://feeds.feedburner.com/NorbertEder-Livingnet
Feed Description: Copyright (c)2005, 2006 by Norbert Eder
M��chte man ��berpr��fen ob ein bestimmter ADO.NET Provider am System registriert ist, kann dies mit einigen Zeilen Code erledigt werden. Das nachfolgende Beispiel liefert eine Liste aller verf��gbaren ADO.NET Provider.
Zu beachten ist an dieser Stelle, dass Provider, die ��ber die App.Config eingebunden wurden, hier ebenfalls mit aufgelistet werden.
private List GetDbFactoryClasses()
{
List factClasses = new List();
DataTable dt = DbProviderFactories.GetFactoryClasses();
if (dt != null)
{
foreach (DataRow dr in dt.Rows)
{
factClasses.Add(dr[2].ToString());
}
}
return factClasses;
}
Eine ��berpr��fung ist nicht nur in Problemf��llen sinnvoll, sondern sollte auch vor dem Laden eines Providers ��ber DbProviderFactory geschehen. Dadurch kann eine Exception vermieden und der Benutzer entsprechend benachrichtigt werden (oder Eintrag in eine Logdatei und ��hnliches).
Zur Vollst��ndigkeit:
Ein Provider kann folgenderma��en dynamisch geladen werden:
// Nur der Vollst��ndigkeit halber// Wird normalerweise aus einer Konfiguration gelesenstring strProviderInvariantName = "System.Data.SqlClient";
string strConnectionString = "...";
// Laden des Providers// Erstellen der Datenbank-Verbindung// Zuweisung des notwendigen ConnectionStrings
DbProviderFactory dbFactory =
DbProviderFactories.GetFactory(strProviderInvariantName);
DbConnection dbConnection = dbFactory.CreateConnection();
dbConnection.ConnectionString = strConnectionString;
Wie bereits in den Code-Kommentaren angemerkt, werden diese Einstellungen normalerweise aus einer Konfiguration geladen oder in einer anderen Form an die Anwendung ��bergeben. Der Vorteil liegt darin, dass die Anwendung damit mit einem beliebigen ADO.NET Provider ausgef��hrt werden kann.