De nombreux amis sont troublés par le problème de chemin relatif de la base de données ACCESS dans le programme .net, ce qui les oblige à modifier web.config à chaque fois qu'ils déplacent le programme.
Le chemin de la base de données dans la chaîne de connexion à la base de données.
De nombreuses personnes écrivent ce qui suit dans leur web.config :
<paramètres de l'application>
<add key="OLEDBCONNECTIONSTRING" value="Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=E:webApp_DataData.mdb)"></add>
</appSettings>
Le programme s'écrit ainsi :
MyConn = new OleDbConnection(System.Configuration.ConfigurationManager.AppSettings["OLEDBCONNECTIONSTRING"]);//Remarque : Les paramètres de configuration sont écrits différemment dans VS2005 et VS2003. Vérifiez vous-même les différences spécifiques.
De cette manière, lorsque le programme est en cours d'exécution, des erreurs telles. comme les messages suivants sont souvent demandés :
« C:WINDOWSsystem32~App_DataData.mdb » n'est pas un chemin valide. Déterminez si le nom de chemin est correctement orthographié et si vous êtes connecté au serveur sur lequel le fichier est stocké. Source de données = ~App_DataData.mdb
Même si le chemin absolu est correct, web.config doit être modifié lors de la transplantation du programme, c'est donc plus gênant.
Il existe également des moyens d'utiliser Server.MapPath comme ASP dans web.config pour obtenir le chemin de la base de données, mais web.config ne reconnaît pas Server.MapPath, donc cette méthode ne fonctionne pas.
Plus tard, grâce à l'exploration et à la référence à d'autres programmes, j'ai conclu la méthode suivante, qui permet de facilement transplanter le chemin du programme sans avoir à modifier le chemin de la base de données ACCESS.
Ce que j'ai écrit dans web.config est le suivant :
<appSettings>
<add key="SQLConnString" value="provider=microsoft.jet.oledb.4.0;data source="/>
<add key="dbPath" value="~/App_Data/mydata.mdb"/>
</appSettings>
Dans la classe d'accès aux données du programme, j'ai sorti "SQLConnString" et "dbPath" et les ai connectés dans une chaîne "CONN_STRING_NON_DTC".
chaîne publique statique en lecture seule CONN_STRING_NON_DTC = System.Configuration.ConfigurationManager.AppSettings["SQLConnString"].ToString() + System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["dbPath"]) + ";";
Il s'agit de la méthode d'écriture dans VS2005. J'ai défini CONN_STRING_NON_DTC en lecture seule statique pour faciliter l'utilisation.
Eh bien, de cette façon, vous pouvez transplanter votre programme à volonté sans vous soucier du chemin de la base de données, une fois pour toutes ^_^, adapté aux paresseux comme moi !