好多朋友被access數(shù)據(jù)庫在.net程序中相對路徑的問題困擾,搞得每次移動程序都要去修改web.config
中數(shù)據(jù)庫連接字符串的數(shù)據(jù)庫路徑。
好多人的web.config中的寫法如下:
<appsettings>
<add key="oledbconnectionstring" value="provider=microsoft.jet.oledb.4.0;data
source=e:/web/app_data/data.mdb)"></add>
</appsettings>
程序中這樣寫:
myconn = new oledbconnection(system.configuration.configurationmanager.appsettings["oledbconnectionstring"]);//注釋一下:vs2005和vs2003中的configurationsettings寫法不一樣,具體區(qū)別自己查吧
這樣程序運行時經(jīng)常提示諸如以下的錯誤:
'c:/windows/system32/~/app_data/data.mdb'不是一個有效的路徑。 確定路徑名稱拼寫是否正確,以及是否連接到文件存放的服務(wù)器。 data source=~/app_data/data.mdb
就算用絕對路徑正確,那么移植程序時還要去修改web.config,所以比較麻煩。
也有在web.config中使用象asp那樣的server.mappath取數(shù)據(jù)庫路徑的,但web.config不認識server.mappath,此方法也行不通。
后來通過摸索、參考其它程序,總結(jié)出如下方法,可以方便的移植程序路徑而不必再去修改access數(shù)據(jù)庫路徑。
我在web.config中的寫法如下:
<appsettings>
<add key="sqlconnstring" value="provider=microsoft.jet.oledb.4.0;data source="/>
<add key="dbpath" value="~/app_data/mydata.mdb"/>
</appsettings>
程序中的數(shù)據(jù)訪問類中我把"sqlconnstring"和"dbpath"取出來連接成一個字符串"conn_string_non_dtc"
public static readonly string conn_string_non_dtc = system.configuration.configurationmanager.appsettings["sqlconnstring"].tostring() + system.web.httpcontext.current.server.mappath(configurationmanager.appsettings["dbpath"]) + ";";
這是vs2005中的寫法
我把conn_string_non_dtc定義成static readonly是為了使用方便。
好了,這樣就可以隨便移植你的程序而不用關(guān)心數(shù)據(jù)庫的路徑了,一勞永逸啊^_^,適合我這樣的懶人!
新聞熱點
疑難解答
圖片精選