程序的本地/专用sql数据库

时间:2013-11-09 14:58:42

标签: c++ sql

我有一个正在开发的C ++程序,它处理许多不同类型的对象,这些对象需要在启动时从文件中检索。文件总大小略小于1GB。该程序必须至少在Windows 7和Linux上运行。

我的目标是提供从文件读取并将其存储到对象中的功能(包括数据验证),因此我能想到的解决方案是:

  1. 简单地为每个对象类型提供至少一个函数以从文件中读取,并将数据复制到新创建的对象。这就是我到目前为止所做的。
  2. 使用数据库存储数据并使用SQL检索它。
  3. 我想切换到第二个选项,但是我有一些限制:

    • 我不允许使用我的程序连接到互联网,因此远程服务器数据库是不可能的。
    • 我不允许制作强制用户安装其他软件的程序,在本例中为本地数据库。
    • 只能通过运行程序来访问本地数据:没有用户可以运行的其他可执行文件来修改或读取文件。

    我在互联网上搜索了一个c ++库,它允许程序使用SQL语法将特定数据存储/检索到本地文件,但到目前为止我什么都没有。我知道的数据库软件,如MySQL,Postgresql等,由于我提到的限制,不会这样做。

    我的主要问题是:是否有这样的c ++库,还是我必须实现自己的? 我希望它是免费的,但我可以做任何我能找到的事情。

    如果没有这样的库,有没有人知道在本地为c ++程序存储数据的其他选择?如果我要实现自己的,那么存储我的对象的方式(如在文件数据结构中)(对于少于1GB的数据,它没有极慢的速度)?

1 个答案:

答案 0 :(得分:2)

SQLite符合除最后一项之外的所有要求,禁止用户修改程序外的数据。不幸的是,这个很难克服:即使你将数据存储在自定义格式的普通文件中,足够熟练和坚定的用户也总是能够打破这一限制。

其他一切都很完美:数据库存在于一个文件中,不需要网络连接,可以作为程序的一部分安装(它是一个链接到代码的库)。

相关问题