Saschas Weblog

ESCde Developer Blog

  Home :: Kontakt :: RSS Feed
  30 Posts :: 0 Artikel :: 10 Kommentare :: 32 Trackbacks

Archiv

Post Kategorien

ESCde

ESCde Blogger

Montag, 02. Juli 2007 #

Das hat mich einige Zeit gekostet: per Code eine OleDbConnection zu einer Access Datenbank zu öffnen, die im ConnectionStrings-Abschnitt der web.config Datei mit einem relativen Pfad konfiguriert ist.

Während das AccessDataSource Control in der DataFile-Eigenschaft eine relative Pfadangabe wie

DataFile="~/App_Data/datenbank.mdb" 

richtig umzusetzen weiß, funktioniert das  nicht mir einer Connection, die in der web.config konfiguriert ist. Obwohl "DataSource=<absoluter Datenbankpfad>" einwandfrei funktioniert, brachten weder

<connectionStrings>
    <add name="DatenbankConnectionString" 
        connectionString="Provider=Microsoft.Jet.OLEDB.4.0;
        DataSource=~App_Data/datenbank.mdb"
        providerName="System.Data.OleDb"/>
</connectionStrings>

noch folgende Variationen des ConnectionStrings den gewünschten Erfolg:

connectionString="Provider=Microsoft.Jet.OLEDB.4.0;
    Data File=~App_Data/datenbank.mdb"
connectionString="Provider=Microsoft.Jet.OLEDB.4.0;
    DataFile=~App_Data/datenbank.mdb"

Die Lösung:

"~App_Data/" muss im ConnectionString der web.config Datei durch "|DataDirectory|" ersetzt werden.

<connectionStrings>
  <add name="DatenbankConnectionString" 
    connectionString="Provider=Microsoft.Jet.OLEDB.4.0;
    Data Source=|DataDirectory|datenbank.mdb" 
    providerName="System.Data.OleDb"/>
</connectionStrings>

Dann lässt sich eine OleDbConnection im Code mit

OleDbConnection db = new OleDbConnection(
    ConfigurationManager.ConnectionStrings["DatenbankConnectionString"].ConnectionString);
db.Open();

wie gewünscht öffnen.

Das gleiche gilt auch für Verbindungen zu SQLExpress-Datenbanken.


Um ein System.Drawing.Color-Objekt aus einem String mit einem hexadezimalen Farbcode zu erzeugen, muss man den System.Web.UI.WebControls.WebColorConverter verwenden. Ein direktes Erzeugen mit Hilfe des HexCodes im Konstruktor einer neuen Color-Instanz ist nicht möglich.

string hexColor = "#FF8080";
System.Web.UI.WebControls.WebColorConverter converter = 
    new WebColorConverter();
System.Drawing.Color color = 
    (System.Drawing.Color)converter.ConvertFrom(hexColor);
e.Cell.BackColor = color;