在Config文件里面配置数据库连接字符串为相对路径
一.背景
在使用Access数据库文件的时候(也可以是其他的数据库文件,注意此处是“数据库文件”),我们经常无法确定项目安装之后的绝对路径,虽然可以在程序运行的时候通过Application的一些属性取得,但是很多时候还是不方便。
二.相对路径形式的数据库连接字符串的书写方式,如下:
<add name="HomeBookConnectionString" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\Resources\HomeBook.accdb;Persist Security Info=True" providerName="System.Data.OleDb" />
其中 "|DataDirectory|\Resources\HomeBook.accdb;Persist Security Info=True”则是相对路径的写法,指向[应用程序文件夹]下面的"Resources”文件夹下面的“HomeBook.accdb”数据库文件。
个人理解:DataDirectory是指向应用程序exe文件所在目录的。
三.注意事项
1.使用 DataDirectory 时,目录结构中的结果文件的路径不能高于替代字符串指向的目录。 例如,如果完全展开的"DataDirectory”为 "C:\HomeBook”,则上面的连接字符串有效,因为"Resources\HomeBook.accdb”在"C:\HomeBook"下。但是如果尝试将"DataDirectory”指向为"|DataDirectory|\..\data”则会引发一个ArgumentException异常,因为"data”不在"HomeBook”文件夹下。
2.DataDirectory 不是 System.Data.OleDb 独占的。 它还可以用于 System.Data.SqlClient和 System.Data.Odbc .NET 数据提供程序。