23.5 Verbindungszeichenfolgen aus einer Konfigurationsdatei abrufen
Bisher haben wir die Verbindungszeichenfolgen immer im Code geschrieben (und wir werden das auch weiter tun). Das spiegelt die Anforderungen in der täglichen Praxis jedoch nur schlecht wider, denn Sie werden nur selten eine Datenbankanwendung entwickeln, die unter Einbeziehung der Produktionsserver-Datenbank getestet wird. Stattdessen werden Sie bestenfalls mit einer Kopie der Datenbank arbeiten, die sich auf einem anderen Rechner befindet und somit eine andere Verbindungszeichenfolge erfordert als die Produktionsdatenbank. Nach dem bisherigen Kenntnisstand bedeutet dies, dass Sie nach dem erfolgreichen Testen und vor der Auslieferung und Installation der Anwendung die Verbindungsinformationen abschließend ändern und noch einmal kompilieren müssen.
Auch ein anderes typisches Szenario ist denkbar: Die Produktionsdatenbank wird »verschoben«, beispielsweise auf einem anderen Rechner installiert oder dieser erhält eine andere Netzwerkadresse. Auch hier muss die Anwendung neu kompiliert werden, um mit der neuen Verbindungszeichenfolge den Zugriff auf die Dateninformationen zu gewährleisten.
Besser ist es, die Verbindungszeichenfolge isoliert zu betrachten. .NET bietet mit den Konfigurationsdateien dazu die passende Lösung an. Konfigurationsdateien gibt es auf mehreren Ebenen, beispielsweise die Maschinenkonfigurationsdatei für eine lokale Maschine oder die Anwendungskonfigurationsdatei für ein bestimmtes Programm. Konfigurationsdateien werden, soweit vorhanden, vor dem Starten einer .NET-Anwendung ausgewertet.
Werden Verbindungszeichenfolgen in Konfigurationsdateien hinterlegt, können sie ohne Neukompilierung der Anwendung geändert werden, und das sogar mit jedem einfachen Texteditor, denn Konfigurationsdateien sind XML-Dateien.
An einem Beispiel möchte ich Ihnen zeigen, wie Sie nicht nur eine Anwendungskonfigurationsdatei hinsichtlich der Verbindungszeichenfolge auswerten können, sondern auch, wie Sie mittels Programmcode in die Konfigurationsdatei schreiben:
'...\ADO\Verbindung\Konfigurationsdateien.vb |
Option Strict On Imports System.Data.Common Imports System.Data.SqlClient Imports System.Configuration Namespace ADO Module Konfigurationsdateien Sub Test() Dim setting As ConnectionStringSettings = _ ConfigurationManager.ConnectionStrings("SQL2005") If setting Is Nothing Then 'kein Eintrag 'SQL2005' setting = New ConnectionStringSettings() setting.Name = "SQL2005" setting.ConnectionString = "Data Source=.;" & _ "Initial Catalog=Northwind;Integrated Security=sspi" Dim config As Configuration = _ ConfigurationManager.OpenExeConfiguration _ (ConfigurationUserLevel.None) config.ConnectionStrings.ConnectionStrings.Add(setting) config.Save() End If Dim con As DbConnection = New SqlConnection(setting.ConnectionString) con.Open() Console.WriteLine("Verbindung geöffnet") con.Close() Console.ReadLine() End Sub End Module End Namespace
Hinweis |
In das Projekt muss die Bibliothek System.Configuration.dll eingebunden werden. |
Im Code wird zuerst überprüft, ob es in der Anwendungskonfigurationsdatei einen Eintrag namens SQL2005 gibt. Wenn nicht, wird er angelegt und eine Verbindungszeichenfolge definiert. Sollte es noch keine Anwendungskonfigurationsdatei geben, wird diese im Code erzeugt. Danach wird der entsprechende Eintrag aus der Konfigurationsdatei als Argument dem SqlConnection-Konstruktoraufruf übergeben.
Nun sollten wir uns auch noch die Anwendungskonfigurationsdatei ansehen:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="SQL2005"
connectionString=".;Initial Catalog=Northwind;Integrated Security=sspi"
/>
</connectionStrings>
</configuration>
Anwendungskonfigurationsdateien werden standardmäßig im Verzeichnis der ausführbaren Programmdatei (.exe-Datei) gespeichert. Der Dateibezeichner lautet genauso wie der Dateibezeichner der ausführbaren Datei, ergänzt um .config. Innerhalb des Stammelements <configuration> können, wie bereits in Kapitel 8, »Anwendungen: Struktur und Installation«, erläutert wurde, eine Vielzahl auswertbarer untergeordneter Elemente definiert werden, zu denen auch <connectionStrings> zählt. Jeder Eintrag einer Verbindungszeichenfolge steht in einem <add>-Element innerhalb eines <connectionStrings>-Elements. Die Attribute connectionString und name von <add> müssen angegeben werden, providerName ist optional und legt den Datenprovider für die Verbindungszeichenfolge fest. Die Standardeinstellung ist System.Data.SqlClient.
Ändert sich im laufenden Betrieb die Verbindungszeichenfolge, beispielsweise wegen einer Änderung der Netzwerkadresse des Datenbankservers, passen Sie die Verbindungszeichenfolge in der Konfigurationsdatei entsprechend an. Eine Neukompilierung der Anwendung mit erneuter Installation ist nicht notwendig.
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.