我正在尝试将SQLite用于winforms应用程序,我无法弄清楚的是将数据文件放在代码中的位置,以及我的连接字符串应该是什么。现在我已经在我的may项目中添加了一个“App_Code”目录,并将我的数据文件放在该目录中。我收到一个错误,SQLite找不到数据库中存在的表。我传入我的构造函数Application.StartupPath。
任何人都可以帮助我吗?
答案 0 :(得分:2)
我建议创建一个App_Data文件夹并将sqlite数据库文件放在那里。
连接字符串将是:
String connString = "Data Source=App_Data\filename.sqlite; Version=3";
您不必担心传递Application.StartupPath
因为连接字符串中的文件引用是相对于WinForms * .exe。
答案 1 :(得分:1)
通常,您应该在用户AppData目录中存储数据(至少在Vista上)(对于每个用户数据,如记住配置设置),或者在ProgramData中存储机器数据。您应该始终具有对这些的读写权限。
它们可能位于不同版本或窗口的不同位置,用户可能会移动它们,因此您应该使用合适的API(检查MSDN,我只记得C-API方法)来获取它们的路径。
您不能保证您对用户计算机上的程序目录具有写访问权限,只能读取访问权限。
至于构造代码,在单线程环境中,我实际上可以使数据库连接对象易于访问(全局或应用程序主类),并将SQL内容写入内联所需的位置。
对于非常大的项目或者如果有很多重复的查询,您可能需要创建一个DataBase类,该类在构造时连接,并且具有所需的所有查询的方法(例如DataBase.GetClientList以获取Client对象的列表)来自数据库)。这也可以让您轻松确保不会同时使用多个线程中的单个连接对象。
答案 2 :(得分:0)
作为Fire Lancer所说的补充,如果您将数据库用作文档,您还可以选择将数据库存储在用户选择放置的位置。然后你可以使用File - >保存,并将其放在用户想要的任何地方。
这实际上取决于您尝试使用数据库做什么最佳解决方案。