我正在为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
答案 0 :(得分: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();