如何创建与 C++ 一起使用的离线数据库

Posted

技术标签:

【中文标题】如何创建与 C++ 一起使用的离线数据库【英文标题】:How to create offline database to be used with c++ 【发布时间】:2011-11-20 23:04:02 【问题描述】:

我已经看到一些类似主题的问题,但我的问题更像是一个初学者问题。

我已经有一些使用 C++ 和 Microsoft Access 的经验,但从未遇到过如何实际创建或(如果不可能的话)如何使用类似于 Access 的离线数据库。 例如:

MS Access 有自己的表等...所以我即将构建一个需要离线数据库的程序。

我认为使用简单的 txt 文件不是正确的方法...我的下一个选择是什么?有没有办法让所有其他程序员做到这一点?还是我只需要使用 mysql 等数据库提供商之一?

【问题讨论】:

这还不清楚...你在寻找c++的嵌入式数据库吗***.com/questions/3096884/… 【参考方案1】:

我认为有些人为此目的使用 SQLite。我对此了解不多,但您可以在这里了解更多信息:

http://www.sqlite.org/about.html

【讨论】:

Sqlite 得到我的投票。我目前正在围绕它开发一个 C++ 包装器(集成 Boost.Serialization)来实现一个穷人的 NoSQL 文档存储库。效果很好。【参考方案2】:

如果您在 Microsoft 堆栈中,那么您可能想尝试SQL Server Compact。

或者,您可能想要使用SQLite;它在 Microsoft 生态系统中的集成度不高,但它是开源的,并且被广泛使用。

【讨论】:

【参考方案3】:

您可以使用 ODBC 驱动程序并将其与您的数据库源文件链接。只需阅读以下内容: http://msdn.microsoft.com/en-us/library/ca6axakh%28v=vs.80%29.aspx

设置好源代码后,在您的 c++ 代码中使用 odbc api 来进行查询。您也可以尝试使用 ORM 解决方案来访问您的数据库。 http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software

【讨论】:

【参考方案4】:

+1 用于 sqlite

如果您实际上对执行类似 SQL 的查询不感兴趣,可以查看

序列化(例如boost) Boost Property Tree(专注于结构化配置数据,AFAICT) LevelDB(google 的高性能键值存储)

参照。这里还提示了内存映射标准容器:

LevelDB vs. std::map

【讨论】:

哦,有这么多提示,好吧,伙计们,看起来 Sqlite 看起来是最好的选择。谢谢

以上是关于如何创建与 C++ 一起使用的离线数据库的主要内容,如果未能解决你的问题,请参考以下文章

Firestore 与 Firebase 的离线问题

如何在带有 PostgreSQL 数据库的 Web 应用程序中拥有完整的离线功能?

在android中使用mapsforge的离线地图

如何改进iOS App的离线使用体验

如何离线使用 MOBAC 创建的 OSMDroid SQLite 瓦片源文件?

是否可以创建一个跨平台的离线移动应用程序?