使用C#打开Access数据库

时间:2013-10-27 15:26:11

标签: c# winforms ms-access

我有这个连接字符串:

OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=..\Release\DB.accdb"); // Database Connection

我希望我的程序连接到数据库,而不是字符串中的“.. \ Release \”。 我的意思是,我希望程序在程序的文件夹中查找数据库,而不指定文件夹的名称(无论文件夹的名称是什么)。 怎么做的?

2 个答案:

答案 0 :(得分:2)

您应该将数据库添加到项目中(添加 - >现有项目...)并将Build Action设置为Content并将Copy to Output Directory设置为Copy always

enter image description here

之后,您可以使用以下连接字符串:

 string cs = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=test.mdb;Persist Security Info=False;";

以下代码,将在程序文件夹或子文件夹中找到数据库文件:

string programPath = System.IO.Directory.GetParent(System.Reflection.Assembly.GetExecutingAssembly().Location).FullName;
var dbPath = System.IO.Directory.GetFiles(programPath, "*.accdb", SearchOption.AllDirectories).FirstOrDefault();
string cs = null;
if (!string.IsNullOrEmpty(dbPath))
{
    cs = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Persist Security Info=False;", dbPath);
}

答案 1 :(得分:1)

也许你可以使用像

这样的东西
String strAppDir = System.IO.Path.GetDirectoryName(
        System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
String strFullPathToMyFile = System.IO.Path.Combine(strAppDir, "DB.accdb");

REF:

How to: Get the Application Directory