如何在程序中访问Access写相对路径 :
1、OleDbConnection的连接字符串必须是绝对路径,ADO.Net提供了一个“特殊字符串” DataDirectory表示“数据库文件夹”,如果是Winform程序DataDirectory表示当前运行的exe的文件夹,对于ASP.Net程序DataDirectory表示当前项目的App_data文件夹。
2、程序中的很多文件默认是不保存到“数据库文件夹”下的,有的就算默认是保存到“数据库文件夹”,也不一定是每次运行都更新。如果想让程序中的某个文件每次运行时都更新并且保存到“数据库文件夹”中,步骤如下:鼠标放到这个文件上,右击,属性,在属性框中“高级”,“复制到输出目录”,“始终复制”,就可以了。下图以Program.cs文件为例。
3、在WinForm中如果不修改DataDirectory,则运行时修改的是exe同文件夹下的mdb,而开发人员看的是项目中的mdb。而正式运行的时候则需要程序操作exe同文件夹下的mdb,因此通过代码修改DataDirectory。代码见下方,这个代码要放到程序最开始运行一次即可。如果是WinForm程序则要放到Main最开始。
string dataDir = AppDomain.CurrentDomain.BaseDirectory;
if (dataDir.EndsWith(@"\bin\Debug\")
|| dataDir.EndsWith(@"\bin\Release\"))
{
dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;
AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);
}