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

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;

}

阅读更多
个人分类: Asp.net
上一篇UserControl 中TagPrefix与TagName
下一篇MVC页面重定向'页面跳转
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭