Многие друзья обеспокоены проблемой относительного пути к базе данных ACCESS в программе .net, из-за чего им приходится изменять web.config каждый раз, когда они перемещают программу.
Путь к базе данных в строке подключения к базе данных.
Многие люди пишут в своем web.config следующее:
<Настройки приложения>
<add key="OLEDBCONNECTIONSTRING" value="Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=E:webApp_DataData.mdb)"></add>
</appSettings>
Программа написана так:
MyConn = new OleDbConnection(System.Configuration.ConfigurationManager.AppSettings["OLEDBCONNECTIONSTRING"]);//Примечание. Настройки конфигурации написаны по-разному в VS2005 и VS2003. Проверьте конкретные различия самостоятельно.
Таким образом, при запуске программы возникнут такие ошибки. поскольку часто запрашивается следующее:
«C:WINDOWSsystem32~App_DataData.mdb» не является допустимым путем. Определите, правильно ли написано имя пути и подключены ли вы к серверу, на котором хранится файл. Источник данных=~App_DataData.mdb
Даже если абсолютный путь правильный, web.config необходимо изменить при пересадке программы, так что это более хлопотно.
Существуют также способы использования Server.MapPath, например ASP в web.config, для получения пути к базе данных, но web.config не распознает Server.MapPath, поэтому этот метод не работает.
Позже, исследуя и ссылаясь на другие программы, я пришел к следующему методу, который позволяет легко перенести путь к программе без необходимости изменения пути к базе данных ACCESS.
В web.config я написал следующее:
<appSettings>
<add key="SQLConnString" value="provider=microsoft.jet.oledb.4.0;источник данных="/>
<add key="dbPath" value="~/App_Data/mydata.mdb"/>
</appSettings>
В классе доступа к данным в программе я вынул "SQLConnString" и "dbPath" и соединил их в строку "CONN_STRING_NON_DTC"
общедоступная статическая строка только для чтения CONN_STRING_NON_DTC = System.Configuration.ConfigurationManager.AppSettings["SQLConnString"].ToString() + System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["dbPath"]) + ";";
Это метод записи в VS2005. Для простоты использования я определил CONN_STRING_NON_DTC как статический только для чтения.
Что ж, таким образом вы можете пересадить свою программу по своему желанию, не заботясь о пути к базе данных, раз и навсегда ^_^, подходит для ленивых людей вроде меня!