如何创建与 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++ 一起使用的离线数据库的主要内容,如果未能解决你的问题,请参考以下文章
如何在带有 PostgreSQL 数据库的 Web 应用程序中拥有完整的离线功能?