Sie sind hier: Startseite | Wissen
BASTA 2016

Was ist Providerfabrik?

Stark vereinfacht wurde in ADO.NET 2.0 die Möglichkeit, unabhängig von einer konkreten Datenbank zu programmieren. Durch die neuen Basisklassen DbProviderFactory, DbConnection, DbCom-mand, DbDataReader sowie die bereits vorher vorhandene DbDataAdapter-Klasse kann man nun die Informationen zum Datenprovider in einer zur Laufzeit austauschbaren Zeichenkette halten. Die Klassen befinden sich im Namensraum System.Data.Common.

Durch die neue Funktion zur Ermittlung der installierten ADO.NET-Datenprovider (siehe Anfang dieses Kapitels) wird es möglich, dass eine Anwendung zur Laufzeit aus den verfügbaren Da-tenprovidern einen geeigneten Provider auswählt.

Es findet aber keine Übersetzung von SQL-Befehlen statt. Wenn Sie datenbankmanagementsystem-spezifische Befehle nutzen, verlieren Sie die Providerunabhängigkeit.

Beispiel

Das folgende Beispiel zeigt das Lesen von Daten mit einem Datareader und einem Dataset mithilfe des providerunabhängigen Programmiermodells. Dabei wird bei der Instanziierung der Klasse DbProvi-derFactory der Datenprovider (hier: System.Data.SqlClient) festgelegt. Durch die Instanz der Klasse DbProviderFactory können dann spezifische Verbindungsobjekte (provider.Create¬Connection()), Befehlsobjekte (provider.CreateCommand()) und Datenadapter (provi-der.CreateDataAdap¬ter()) erzeugt werden.

  public static void run()
  {
   Demo.Print("=== DEMO Provider Factory");
   const string PROVIDER = "System.Data.SqlClient";
   const string CONNSTRING = "Integrated Security=SSPI;Persist Security In-fo=False;Initial Catalog=itvisions; Data Source=Wetter\SQLEXPRESS";
   const string SQL1 = "Select * from FL_Fluege";
   const string SQL2 = "Select * from FLB_Fluege_Backup";
   // --- Fabrik erzeugen
   DbProviderFactory provider = DbProviderFactories.GetFactory(PROVIDER);
   // --- Verbindung aufbauen
   DbConnection conn = provider.CreateConnection();
   conn.ConnectionString = CONNSTRING;
   conn.Open();
   // --- Teil 1: DataReader
   // Befehl erzeugen
   DbCommand cmd = provider.CreateCommand();
   cmd.CommandText = SQL1;
   cmd.Connection = conn;
   // Befehl ausführen
   DbDataReader reader = cmd.ExecuteReader();
   // Daten ausgeben
   Demo.PrintReader(reader);
   // --- Teil 2: DataSet
   // Befehl erzeugen
   DbCommand command = provider.CreateCommand();
   command.CommandText = SQL2;
   command.Connection = conn;
   // DataAdapter erzeugen
   DbDataAdapter adapter = provider.CreateDataAdapter();
   adapter.SelectCommand = command;
   // DataSet erzeugen
   DataSet ds = new DataSet();
   // DataSet befüllen
   adapter.Fill(ds);
   // Daten ausgeben
   DataTable t = ds.Tables[0];
   Demo.Print("Anzahl Spalten: " + t.Columns.Count);
   Demo.Print("Anzahl Zeilen: " + t.Rows.Count);
  }

Querverweise zu anderen Begriffen im Lexikon

Beratung & Support:

Schulungen zu diesem Thema:

 Anfrage für eine individuelle Schulung zum Thema Providerfabrik  Gesamter Schulungsthemenkatalog