您的位置:首页 > 编程语言 > ASP

Asp.net连接Access数据库相对路径写法

2014-12-02 00:00 495 查看
Asp.net连接Access数据库时,通常我们将数据库连接字串写到web.config配置文件中。而连接字串中的数据库路径只能用绝对路径形式表示,这样如果要移动程序,就必须要修改web.config 中数据库连接字符串的数据库路径,很麻烦。如果写成相对路径形式如:~/database/test.mdb 也是不正确的。例如:
<connectionstrings>
    <add name="Access" connectionstring="Provider=Microsoft.Jet.OLEDB.4.0;data source=~/database/test.mdb" providername="System.Data.OleDb" />
  </connectionstrings>


上面写法是错误的。

目前常见解决方法有2种:

1、通过使用 DataDirectory 关键词方法

从Asp.net 2.0 开始有App_Data目录来专门存放数据文件,它可以用来放Access,SQL Server Express、XML等数据文件。可以把Access数据库文件放在App_Data文件夹中,然后使用关键词 DataDirectoty来获取路径。
<connectionstrings>
    <add name="Access" connectionstring="Provider=Microsoft.Jet.OLEDB.4.0;data source=|DataDirectory|test.mdb"  providername="System.Data.OleDb" />
  </connectionstrings>


2、在web.config 文件中设置两个字串

在 web.config 文件中设置两个字串,一个是驱动字符串,另一个是 Access 数据库文件的相对路径。使用时用 Server.MapPath() 来获取绝对路径,然后组合出来的连接字符串就可以使用了。
<connectionStrings>
    <add name="Access" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;data source={0}"
      providerName="System.Data.OleDb" />
</connectionStrings>
<appSettings>
    <add key="AccessPath" value="~/Database/test.mdb"/>
</appSettings>


后台使用时 代码如下:
private string GetConnStr()
{
    string connStr = WebConfigurationManager.ConnectionStrings["Access"].ConnectionString;
    connStr = connStr.Replace("{0}", Server.MapPath(WebConfigurationManager.AppSettings["AccessPath"].ToString()));
    return connStr;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: