Viele Freunde haben Probleme mit dem relativen Pfadproblem der ACCESS-Datenbank im .net-Programm, das dazu führt, dass sie web.config jedes Mal ändern müssen, wenn sie das Programm verschieben.
Der Datenbankpfad in der Datenbankverbindungszeichenfolge.
Viele Leute schreiben Folgendes in ihre web.config:
<appSettings>
<add key="OLEDBCONNECTIONSTRING" value="Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=E:webApp_DataData.mdb)"></add>
</appSettings>
Das Programm ist wie folgt geschrieben:
MyConn = new OleDbConnection(System.Configuration.ConfigurationManager.AppSettings["OLEDBCONNECTIONSTRING"]);//Hinweis: ConfigurationSettings werden in VS2005 und VS2003 unterschiedlich geschrieben.
Auf diese Weise können beim Ausführen des Programms Fehler auftreten da Folgendes oft dazu aufgefordert wird:
„C:WINDOWSsystem32~App_DataData.mdb“ ist kein gültiger Pfad. Stellen Sie fest, ob der Pfadname richtig geschrieben ist und ob Sie mit dem Server verbunden sind, auf dem die Datei gespeichert ist. Datenquelle=~App_DataData.mdb
Selbst wenn der absolute Pfad korrekt ist, muss web.config beim Transplantieren des Programms geändert werden, was problematischer ist.
Es gibt auch Möglichkeiten, Server.MapPath wie ASP in web.config zu verwenden, um den Datenbankpfad abzurufen, aber web.config erkennt Server.MapPath nicht, sodass diese Methode nicht funktioniert.
Später kam ich durch Erkundung und Bezugnahme auf andere Programme zu der folgenden Methode, mit der der Programmpfad problemlos übertragen werden kann, ohne dass der ACCESS-Datenbankpfad geändert werden muss.
Was ich in web.config geschrieben habe, lautet wie folgt:
<appSettings>
<add key="SQLConnString" value="provider=microsoft.jet.oledb.4.0;data source="/>
<add key="dbPath" value="~/App_Data/mydata.mdb"/>
</appSettings>
In der Datenzugriffsklasse im Programm habe ich „SQLConnString“ und „dbPath“ herausgenommen und sie zu einem String „CONN_STRING_NON_DTC“ verbunden.
öffentliche statische schreibgeschützte Zeichenfolge CONN_STRING_NON_DTC = System.Configuration.ConfigurationManager.AppSettings["SQLConnString"].ToString() + System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["dbPath"]) + ";";
Dies ist die Schreibmethode in VS2005. Aus Gründen der Benutzerfreundlichkeit habe ich CONN_STRING_NON_DTC als statisch schreibgeschützt definiert.
Nun, auf diese Weise können Sie Ihr Programm nach Belieben verpflanzen, ohne sich um den Pfad der Datenbank zu kümmern, ein für alle Mal ^_^, geeignet für faule Leute wie mich!