2012-08-23 129 views
1

我正在爲C#winforms,sqlite應用程序做一個SETUP項目。 連接字符串似乎有點問題。用戶將把他想要的數據庫放在一個位置(v會告訴他)。在這個例子中,它是"C:\\Program Files(x86)\\DefaultCompany\\RSetup";用戶可以使用他自己的數據庫副本。DataDirectory設置項目

所以我將數據目錄設置到Program.cs主目錄中的這個路徑 這是我能想到的唯一方法。如果有更好的方式,那就是grt !!。

App.config 

     <add name="ConnString" connectionString="|DataDirectory|\MySQlite.db;Compress=True;Version=3" 
       providerName="System.Data.Sqlite" /> 

    Program.cs 
    Setting the datadirectory to the path of the executable. Currently hard coded the path of the executable 
     static void Main() 
      { 

        AppDomain.CurrentDomain.SetData("DataDirectory","C:\\Program Files(x86)\\DefaultCompany\\RSetup"); 

這似乎沒有工作。它不會給出任何錯誤,除非數據不是空白的。似乎並沒有在這兩個是工作建立和常規項目

謝謝 JC

回答

0

你可以問該數據庫所在的用戶,存儲路徑的地方(比如用戶設置),然後你可以隨時找回它。這將爲用戶提供更大的靈活性,如果需要,同一臺機器上的多個用戶可以擁有自己的數據庫。

下面是一些僞...

string dbLocation = Properties.Settings.Default.DatabaseLocation; 
if (string.IsNullOrWhiteSpace(dbLocation) 
{ 
    dbLocation = AskUserForLocation(); 
    Properties.Settings.Default.DatabaseLocation = dbLocation; 
    Properties.Settings.Default.Save(); 
} 

AppDomain.CurrentDomain.SetData("DataDirectory",dbLocation); 

使用這種方法,你也可以添加一個菜單選項,允許用戶根據需要更改位置。

它還使您能夠隨處檢索值,包括創建連接的位置,您可以將路徑附加到讀取連接字符串的位置和創建新連接之間的位置。

SQLiteConnection myConnection = new SQLiteConnection;(); 
myConnection.ConnectionString = Path.Combine(Properties.Settings.Default.DatabaseLocation, myConnectionString); 
myConnection.Open();