C++ 用于在C+中抽象数据库访问的开源库+;?
我正在寻找从我的应用程序中抽象数据库服务器细节的选项(在c++中),我希望编写独立于实际数据库后端的代码。我知道MySQL有一个很好的库,但我不想局限于一个数据库实现。这方面有好的选择吗?许多应用程序使用odbc(例如,通过),也有。在Windows上,您可以使用托管C++或旧ADO-COM接口…C++ 用于在C+中抽象数据库访问的开源库+;?,c++,database,C++,Database,我正在寻找从我的应用程序中抽象数据库服务器细节的选项(在c++中),我希望编写独立于实际数据库后端的代码。我知道MySQL有一个很好的库,但我不想局限于一个数据库实现。这方面有好的选择吗?许多应用程序使用odbc(例如,通过),也有。在Windows上,您可以使用托管C++或旧ADO-COM接口…是很好的。支持多数据库,工作良好,现代C++风格的API,用Booost工作。 < P> QT提供了数据库抽象层。请参阅:。提供了一个非常好的API。 另外,大公司(参见Kyle Lutz的回答)也有d
是很好的。支持多数据库,工作良好,现代C++风格的API,用Booost工作。
< P> QT提供了数据库抽象层。请参阅:。提供了一个非常好的API。另外,大公司(参见Kyle Lutz的回答)也有db抽象层,因此,如果您计划使用/您已经在使用这些框架的任何其他部分,那么使用它们可能是一个好主意。我的意见是忘记跨数据库驱动程序,专注于查找或创建跨数据库数据访问层。一些原因:
- 复杂的查询(阅读:任何不是玩具的东西)最终都会使用一两个特定于数据库的特性<例如,通常用于分页的代码>限制和偏移量不是通用的
- 迟早您会希望批量插入,并且希望它尽可能快,因为3小时比6小时好。每个数据库都有不同的“最佳”方法来实现这一点,因此您的DAL需要对这种情况进行特殊处理
- 不同的数据库可能会公开不同的约束机制,甚至是定制的列类型,这些约束机制可能值得利用(PostgreSQL非常适合)
- 如果要进行任何应用程序级缓存,无论如何都需要DAL
libmysql
——只需将其隐藏在DAL中的编译器防火墙后面,并准备稍后将其替换掉即可。您可以保护自己不受基础结构变化的影响,而不必使用最小公分母SQL包装器
如果你对此不感兴趣,那就看看。和是两个轻量级候选人。对于GNOME。企业数据访问块在C#中可用。你可以创建一些管理的C++包装,如果这是你的选择。哇8年后,我认为这可能是个人最好的给我= D谢谢!