我正在做一个C# winforms,sqlite应用程序的安装项目。连接字符串似乎有点问题。用户将把他想要使用的数据库放在一个位置(v会告诉他)。在本例中,它是"C:\\Program Files(x86)\\DefaultCompany\\RSetup";,用户可以使用自己的DB副本。
因此,我在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
发布于 2012-08-24 02:12:18
您可以询问用户数据库的位置,将该路径存储在某个位置(例如用户设置),然后您可以随时检索它。这将为用户提供更大的灵活性来放置它,如果需要的话,同一台机器上的多个用户可以拥有自己的数据库。
下面是一些伪代码。
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();https://stackoverflow.com/questions/12097494
复制相似问题