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

标签 c++ sql

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

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

  1. 简单地为每个对象类型提供至少一个函数来读取文件,并将数据复制到新创建的对象。这就是我到目前为止一直在做的事情。
  2. 使用数据库存储数据并使用 SQL 检索数据。

我想切换到第二个选项,但是我有一些限制:

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

我在互联网上搜索了一个 c++ 库,它允许程序使用 SQL 语法将特定数据存储/检索到本地文件,但到目前为止我一无所获。我知道的数据库软件,如 MySQL、Postgresql 等,由于我提到的限制而无法使用。

我的主要问题是:有这样的 C++ 库吗,还是我必须自己实现? 我宁愿它是免费的,但我可以使用我能找到的任何东西。

如果没有这样的库,有没有人知道为 c++ 程序在本地存储数据的其他替代方法?如果我自己实现,有什么方法(如在文件数据结构中)存储我的对象(对于少于 1GB 的数据不会非常慢)?

最佳答案

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

其他一切都非常适合:数据库位于文件中,不需要网络连接,并且可以作为程序的一部分安装(它是链接到代码的库)。

关于c++ - 程序的本地/专用 sql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19877360/

相关文章:

MySQL 简化 JOINS、日期函数

sql - 合并两个按月计数的查询

sqlite附近的语法错误

c++ sort 会崩溃,而 stable_sort 不会,但两者都不起作用

c++ - statvfs() 无法正常工作 C++ linux

c++按元素编辑txt文件

sql - JOIN 两个 SELECT 语句结果

c++ - 为什么我不应该使用 std::string.c_str() 作为缓冲区?

c++ - C++ 复制构造函数上的双重释放错误

sql - 如何为 Oracle 中的列组合提供唯一约束?