好多朋友被access数据库在.net程序中相对路径的问题困扰,搞得每次移动程序都要去修改web.config 中数据库连接字符串的数据库路径。 好多人的web.config中的写法如下: appsettings add key=oledbconnectionstring value=provider=microsoft.jet.oledb.4.
好多朋友被access数据库在.net程序中相对路径的问题困扰,搞得每次移动程序都要去修改web.config
中数据库连接字符串的数据库路径。
好多人的web.config中的写法如下:
程序中这样写:
myconn = new oledbconnection(system.configuration.configurationmanager.appsettings[oledbconnectionstring]); //注释一下:vs2005和vs2003中的configurationsettings写法不一样,具体区别自己查吧
这样程序运行时经常提示诸如以下的错误:
'c:\windows\system32\~\app_data\data.mdb'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。 data source=~\app_data\data.mdb
就算用绝对路径正确,那么移植程序时还要去修改web.config,所以比较麻烦。
也有在web.config中使用象asp那样的server.mappath取数据库路径的,但web.config不认识server.mappath,此方法也行不通。
后来通过摸索、参考其它程序,总结出如下方法,可以方便的移植程序路径而不必再去修改access数据库路径。
我在web.config中的写法如下:
程序中的数据访问类中我把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]) + ;;
http://blog.csdn.net/zhangqiao840405/archive/2009/07/07/4328370.aspx