2015-09-03 75 views
3

我有一個使用數據庫的C#項目,目前數據庫沒有嵌入到exe或C#項目中。我使用以下路徑:訪問數據庫的管理路徑

connection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Anant\Documents\WebsiteSearch.accdb; 
              Persist Security Info=False;"; 

有什麼辦法,我可以只添加WebsiteSearch.accdb到項目,並相應地更改路徑。這個想法是,當有人在其他計算機上啓動exe時,我不希望總是改變數據庫的路徑。

回答

1

對於這個通常我們把數據庫放在應用程序文件夾本身。如果你把DB在bin/debug比起來,總是很容易訪問數據庫

你的代碼會變成這樣

connection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0; 
Data Source=WebsiteSearch.accdb; 
Persist Security Info=False;"; 

或者,

connection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0; 
Data Source="+AppDomain.CurrentDomain.BaseDirectory+"WebsiteSearch.accdb; 
Persist Security Info=False;"; 
1

您可以使用相對路徑

ConnectionString = "Data Source=|DataDirectory|\WebsiteSearch.accdb"; 

或在您的c#代碼

string executable = System.Reflection.Assembly.GetExecutingAssembly().Location; 
    string path = (System.IO.Path.GetDirectoryName(executable)); 
    AppDomain.CurrentDomain.SetData("DataDirectory", path); 
0

在解決方案資源管理器中將accdb文件標記爲「內容」,並將其設置爲「如果較新則複製」。

這將確保數據庫始終在那裏。

1

您可以使用|DataDirectory|

connection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\WebsiteSearch.accdb; Persist Security Info=False;"; 

|DataDirectory|是無需硬編碼的完整路徑DATEBASE替換字符串。

你可以調用AppDomain.SetData在運行時將其值設置,如果你不這樣做,將默認爲應用程序的文件夾,所以最簡單的辦法是包括在同一文件夾作爲可執行的應用數據庫。

0

如果您每次都重新編譯,那麼您也可以將連接字符串放在app.config文件中,並將其部署到您的機器上。無論何時您想更改連接字符串,您都可以簡單地編輯配置文件,無需每次重新編譯代碼。