1

我正在为 C# winforms、sqlite 应用程序做一个 SETUP 项目。连接字符串似乎有点问题。用户将他想要使用的数据库放在一个位置(v 会告诉他)。在此示例中"C:\\Program Files(x86)\\DefaultCompany\\RSetup";,用户可以使用自己的数据库副本。

所以我在 Program.cs Main 中将数据目录设置为这个路径,这是我能想到的唯一方法。如果有更好的方法那就是 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

4

1 回答 1

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();
于 2012-08-23T18:12:18.157 回答