2013-10-27 6 views
1

У меня есть эта строка соединения:Открытие доступа к базе данных с C#

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

Я хочу, чтобы моя программа для подключения к базе данных без «.. \ Release \» в строке. Я имею в виду, что я хочу, чтобы программа искала базу данных в папке программы, без указания имени папки (независимо от имени папки). Как это делается?

+0

вы пробовали просто удаление '\ Release \ '? –

+0

Я пробовал .. я получаю эту ошибку: «E: \ Dangerous \ Programming \ C# Projects \ My Projects \ Incompleted Projects \ ExaminerApp \ ExaminerApp \ bin \ Debug \ ... \ DB.accdb 'не является допустимым путем. Убедитесь, что имя пути написано правильно и что вы подключены к серверу, на котором находится файл. – John

+0

хорошо .. thats правильно beacuse у вас нет файла .accdb в вашей папке * Debug * .. там, где есть база данных. Правило большого пальца: в вас не spicify путь, программа будет выглядеть в той же папке, что и файл '.exe'. –

ответ

1

Вы должны добавить DB в проект (Add -> Existing Item ...) и установите 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); 
} 
+0

@ Джон, пожалуйста. Я добавил код, чтобы найти файл db в подпапках. – kmatyaszek

1

Может быть, вы могли бы использовать что-то вроде

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

исх:

How to: Get the Application Directory

Смежные вопросы