我正在部署一个使用VS 2008在XP SP3上构建的Winform应用程序。
我创建了一个空架构的数据库,将其放置在项目的根文件夹中,并在属性中选择了Build Action
:嵌入式资源和Copy to Output directory
:始终复制。现在,我将连接字符串从app.config connectionString部分中删除,并在appSetting
中添加了一个条目:key
="database";value
="mydb.db;Version=3"。
因此,为了创建我的connectionString
,我使用了:
SQLiteConnection con = new SQLiteConnection("Data Source=" + Path.Combine(Application.StartupPath, ConfigurationManager.AppSettings["database"]));
一切都运作正常,我使用一个安装程序打包了这个应用程序。但是在安装应用程序后,数据库无法被找到,因此我不得不将数据库复制到设置项目中的“应用程序文件夹”才能使其工作。
我认为数据库由于“总是复制”的缘故应该位于应用程序dll中,但我无法访问它。那么我到底做错了什么?
我怀疑我应该仅连接到根数据库,而不是使用“Application.StartupPath”。但是我想请教最佳实践,因为虽然我的方法可行,但看起来仍然像一个变通方法。所以,请问有人能与我分享他的经验吗?感谢您的阅读。