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

5

我正在寻找将数据库服务器细节抽象化处理的选项,以使我的应用程序(使用c++编写)可以独立于实际的数据库后端而存在。我知道MySQL有一个很好的库,但我不想被限制在单一的数据库实现上。是否有更好的选择呢?


企业数据访问块在C#中可用。如果您愿意,您可能会创建一些托管的C++包装器。 - No Refunds No Returns
6个回答

4

SOCI很不错。它支持多种数据库,运行良好,具有现代C++风格的API,并且可以与boost一起使用。


4
我的意见是放弃跨数据库驱动程序的想法,专注于查找或创建跨数据库数据访问层。原因如下:
  • 复杂查询(即任何不是玩具的东西)总会使用一个或两个特定于数据库的功能。例如,用于分页的LIMITOFFSET并非普遍存在。
  • 早晚你会想要进行批量插入,并希望它尽可能快,因为3小时比6小时好。每个数据库都有不同的“最佳”方法来实现这一点,因此您的数据访问层(DAL)将需要对此进行特殊处理。
  • 不同的数据库可能会公开不同的约束机制——甚至是自定义列类型——如果可能的话可以利用(PostgreSQL非常适合此项工作)。
  • 如果您想要进行任何应用程序级缓存,您将需要一个DAL。

因此,继续使用libmysql本身——只需在DAL中隐藏它,准备随时更换。您可以在不使用最低公共分母SQL包装器的情况下保护自己免受基础架构的变化影响。

如果这不符合您的要求,请查看SQLAPI++


1

许多应用程序使用ODBC(例如通过unixODBC),还有otl。在Windows上,您可以使用托管C++中的ado.net或旧的ADO COM接口...


1

1

libodbc++提供了一个相当不错的API。 此外,大公司Qt(请参见Kyle Lutz的答案)和wxWidgets都有数据库抽象层,因此如果您计划使用/已经使用这些框架的任何其他部分,使用它们可能是个好主意。


1

哇,8年后,我想这可能是我个人最好的成绩 =D 谢谢! - gct

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接