2010-03-20 99 views
2

所以我試圖連接到我的數據庫在指定的位置,並建立連接,只要在數據源字段中指定相同位置的數據庫,但如果我試圖分發我的應用程序,文件路徑會改變,並會導致我想避免的錯誤。這裏是我的connstring:幫助連接字符串

string connstring = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\PC1\Documents\Visual Studio 2008\Projects\Test\Test\bin\Debug\MyDatabase01.accdb;Persist Security Info=true"; 

是否有反正我可以定義DataSource位置在同一個文件夾?

回答

2

如果您不能使用在連接字符串中的相對路徑,你可以在運行時生成它 類似:

string connstring = string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Persist Security Info=true", Path.Combine(Directory.GetCurrentDirectory(), "MyDatabase01.accdb")); 
3

有幾件事情我能想到的事:

  1. 將數據庫存儲在應用程序旁邊,然後在連接字符串中使用相對文件路徑(這使用內置到ADO.Net中的替換字符串 - 有關更多信息,請參閱here):

    string connstring = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\MyDatabase01.accdb;Persist Security Info=true"; 
    
  2. 將連接字符串存儲在配置文件中。這可以在您的應用程序在數據庫位於不同位置的計算機上運行時進行更改。

  3. 讓您的應用程序在第一次使用時提示您輸入數據庫的位置,然後將該位置保存爲設置文件以在連接字符串中使用。

如果您正在使用應用程序分發數據庫,​​則選項1是最好的。如果沒有,我會去選項3.

+0

正常安裝選項1)與UAC(Vista,Win7)不兼容 – 2010-03-20 20:49:00

+0

他沒有說他正在寫入他的數據庫:) – adrianbanks 2010-03-20 22:19:16