C# 用C语言打开Access数据库#

C# 用C语言打开Access数据库#,c#,winforms,ms-access,C#,Winforms,Ms Access,我有以下连接字符串: OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=..\Release\DB.accdb"); // Database Connection 我希望我的程序连接到数据库时,字符串中不带“.\Release\”。 我的意思是,我希望程序在程序文件夹中查找数据库,而不指定文件夹的名称(无论文件夹的名称是什么)。 这是怎么做到的?也许你可以用 Str

我有以下连接字符串:

OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=..\Release\DB.accdb"); // Database Connection
我希望我的程序连接到数据库时,字符串中不带“.\Release\”。 我的意思是,我希望程序在程序文件夹中查找数据库,而不指定文件夹的名称(无论文件夹的名称是什么)。
这是怎么做到的?

也许你可以用

String strAppDir = System.IO.Path.GetDirectoryName(
        System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
String strFullPathToMyFile = System.IO.Path.Combine(strAppDir, "DB.accdb");
参考:


您应该将数据库添加到项目中(添加->现有项…),并将
构建操作设置为
内容
复制到输出目录
始终复制

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

 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);
}

您尝试过删除“\Release”吗?我尝试过。。我收到以下错误:“E:\Hazard\Programming\C#Projects\My Projects\Incompleted Projects\TesterApp\TesterApp\bin\Debug\…\DB.accdb”不是有效路径。请确保路径名拼写正确,并且您已连接到文件所在的服务器。好的。。这是正确的,因为调试文件夹中没有.accdb文件。。在那里对接数据库。经验法则是:如果不指定路径,程序将与
.exe
文件位于同一文件夹中。@John,不客气。我添加了在子文件夹中查找db文件的代码。