DevTrain

Autor: Hannes Preishuber

Datenbank Connection in .Net verwalten

Der Connections String zeigt den Weg zur Datenquelle. Dieser String wird in der Webanwendung sehr oft benötigt und daher macht es Sinn diesen String nur einmal zu verwalten.Bisher wählten viele Entwickler die global.asa zum speichern des Connection Strings. Dabei wird in eine Application Variable der String geschrieben und über diese abgerufen.

Application("mycon")="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Northwind;Data Source=PREW2KSVUS"

In .Net steht die Datei web.Config als zentraler Managementort für die Webappliaktion zur Verfügung. Neben Einstellungen zum Debugging, Security oder Statusverwaltung lassen sich dort auch eigene Werte ablegen wie z.B. ein Connection String.

Dazu muss in der Web.Config zunächst eine Sektion definiert werden in der die Werte liegen können.

<configuration>
    <configSections>
      <sectionGroup name="system.web">
 <section name="myconf" type="System.Configuration.NameValueSectionHandler,System" />
       </sectionGroup>
    </configSections>
....

Damit kann in der Sektion MyConf Information abgelegt werden. Die Sektion muss unterhalb des Knotens System.web liegen.
<myconf><BR>       <addkey="DBCON"value="server=localhost;uid=sa;pwd=;database=portal" />
     
</myconf>

Über Add Key lassen sich nun mehrere Connection Strings oder andere Werte verwalten. Der Vorteil ist, das beim "Umzug" der Anwendung nur mehr in dieser einen Datei alle Einstellungen vorgenommen werden müssen. Die Datei Web.Config ist übrigens automatisch vom IIS vor Download oder Einsicht geschützt.

Jetzt müssen die Werte in den ASPX oder Codebehind Seiten noch abgerufen werden. Dafür gibt es die Funktion Context.getconfig. Man erhält allerdings eine NameValue Collection als Rückgabe, so das noch ein Zwischenschritt nötig ist. Die Rückgabe muss gecastet werden. Dies passiert in VB mit Ctype in C# durch vorstellen des Casttyps. Anschliessend wird der Wert über Item aus der Liste selektiert  und in einen String gecastet. Dies könnte auch in einem Schritt erledigt werden.
Dim hshTable as NameValueCollection = CType(Context.GetConfig("system.web/myconf"), NameValueCollection)
Dim dsn as String = CType(hshTable.Item("DBCON"), String)

Um den Type NameValue Collection verwenden zu können, muss der passende Namespace referenziert werden.
Imports System.Collections
Imports System.Collections.Specialized

Dieser Artikel bezieht sich auf die Beta 2 des .NET Frameworks.  


Erfasst am: 10.07.2001 - Artikel-URL: http://www.devtrain.de/news.aspx?artnr=485
© Copyright 2003 ppedv AG - http://www.ppedv.de