Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 用于在C+中抽象数据库访问的开源库+;?_C++_Database - Fatal编程技术网

C++ 用于在C+中抽象数据库访问的开源库+;?

C++ 用于在C+中抽象数据库访问的开源库+;?,c++,database,C++,Database,我正在寻找从我的应用程序中抽象数据库服务器细节的选项(在c++中),我希望编写独立于实际数据库后端的代码。我知道MySQL有一个很好的库,但我不想局限于一个数据库实现。这方面有好的选择吗?许多应用程序使用odbc(例如,通过),也有。在Windows上,您可以使用托管C++或旧ADO-COM接口…是很好的。支持多数据库,工作良好,现代C++风格的API,用Booost工作。 < P> QT提供了数据库抽象层。请参阅:。提供了一个非常好的API。 另外,大公司(参见Kyle Lutz的回答)也有d

我正在寻找从我的应用程序中抽象数据库服务器细节的选项(在c++中),我希望编写独立于实际数据库后端的代码。我知道MySQL有一个很好的库,但我不想局限于一个数据库实现。这方面有好的选择吗?

许多应用程序使用odbc(例如,通过),也有。在Windows上,您可以使用托管C++或旧ADO-COM接口…

是很好的。支持多数据库,工作良好,现代C++风格的API,用Booost工作。

< P> QT提供了数据库抽象层。请参阅:。

提供了一个非常好的API。
另外,大公司(参见Kyle Lutz的回答)也有db抽象层,因此,如果您计划使用/您已经在使用这些框架的任何其他部分,那么使用它们可能是一个好主意。

我的意见是忘记跨数据库驱动程序,专注于查找或创建跨数据库数据访问层。一些原因:

  • 复杂的查询(阅读:任何不是玩具的东西)最终都会使用一两个特定于数据库的特性<例如,通常用于分页的代码>限制和偏移量不是通用的
  • 迟早您会希望批量插入,并且希望它尽可能快,因为3小时比6小时好。每个数据库都有不同的“最佳”方法来实现这一点,因此您的DAL需要对这种情况进行特殊处理
  • 不同的数据库可能会公开不同的约束机制,甚至是定制的列类型,这些约束机制可能值得利用(PostgreSQL非常适合)
  • 如果要进行任何应用程序级缓存,无论如何都需要DAL
所以,继续自己使用
libmysql
——只需将其隐藏在DAL中的编译器防火墙后面,并准备稍后将其替换掉即可。您可以保护自己不受基础结构变化的影响,而不必使用最小公分母SQL包装器


如果你对此不感兴趣,那就看看。

和是两个轻量级候选人。对于GNOME。

企业数据访问块在C#中可用。你可以创建一些管理的C++包装,如果这是你的选择。哇8年后,我认为这可能是个人最好的给我= D谢谢!