首页 > 编程 > .NET > 正文

Access数据库在asp.net程序中相对路径的解决方法

2024-07-10 13:09:12
字体:
来源:转载
供稿:网友
  • 本文来源于网页设计爱好者web开发社区http://www.html.org.cn收集整理,欢迎访问。
  • 好多朋友被access数据库在.net程序中相对路径的问题困扰,搞得每次移动程序都要去修改web.config
    中数据库连接字符串的数据库路径。

    好多人的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写法不一样,具体区别自己查吧

    这样程序运行时经常提示诸如以下的错误:
    '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中的写法如下:

    <appsettings>
    <add key="sqlconnstring" value="provider=microsoft.jet.oledb.4.0;data source="/>
    <add key="dbpath" value="~/app_data/mydata.mdb"/>
    </appsettings>
    程序中的数据访问类中我把"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是为了使用方便。
    好了,这样就可以随便移植你的程序而不用关心数据库的路径了,一劳永逸啊^_^,适合我这样的懒人!

    发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表