Wenn Asp.net eine Verbindung zur Access-Datenbank herstellt, schreiben wir normalerweise die Datenbankverbindungszeichenfolge in die Konfigurationsdatei web.config. Der Datenbankpfad in der Verbindungszeichenfolge kann nur als absoluter Pfad ausgedrückt werden. Wenn Sie das Programm verschieben möchten, müssen Sie den Datenbankpfad der Datenbankverbindungszeichenfolge in web.config ändern, was sehr mühsam ist. Es ist auch falsch, wenn es in Form eines relativen Pfads geschrieben wird, z. B. ~/database/test.mdb. Zum Beispiel:
<connectionstrings> <add name="Access" connectionstring="Provider=Microsoft.Jet.OLEDB.4.0;data source=~/database/test.mdb" providername="System.Data.OleDb" /> </connectionstrings>
Die obige Schreibweise ist falsch.
Derzeit gibt es zwei gängige Lösungen:
1. Durch die Verwendung der DataDirectory-Schlüsselwortmethode
Ab Asp.net 2.0 gibt es ein App_Data-Verzeichnis zum spezifischen Speichern von Datendateien . Kann zum Speichern von Access-, SQL Server Express-, XML- und anderen Datendateien verwendet werden. Sie können die Access-Datenbankdatei im Ordner App_Data ablegen und dann das Schlüsselwort DataDirectoty verwenden, um den Pfad abzurufen.
<connectionstrings> <add name="Access" connectionstring="Provider=Microsoft.Jet.OLEDB.4.0;data source=|DataDirectory|test.mdb" providername="System.Data.OleDb" /> </connectionstrings>
2. Legen Sie zwei Zeichenfolgen in der web.config-Datei fest
Legen Sie zwei Zeichenfolgen in der web.config-Datei fest, eine ist die Treiberzeichenfolge und die andere ist der relative Zugriffspfad zum Datenbankdatei. Wenn Sie es verwenden, verwenden Sie Server.MapPath(), um den absoluten Pfad abzurufen, und dann kann die kombinierte Verbindungszeichenfolge verwendet werden.
<connectionStrings> <add name="Access" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;data source={0}" providerName="System.Data.OleDb" /> </connectionStrings> <appSettings> <add key="AccessPath" value="~/Database/test.mdb"/> </appSettings>
Bei Verwendung im Hintergrund lautet der Code wie folgt:
private string GetConnStr() { string connStr = WebConfigurationManager.ConnectionStrings["Access"].ConnectionString; connStr = connStr.Replace("{0}", Server.MapPath(WebConfigurationManager.AppSettings["AccessPath"].ToString())); return connStr; }