【问题标题】:Database abstraction layers for (Visual) C++(Visual) C++ 的数据库抽象层
【发布时间】:2010-09-08 04:27:00
【问题描述】:

有哪些选项可用于从 C++ 访问不同的数据库? 换句话说,ADO 有哪些替代方案? 有什么好处和坏处?

【问题讨论】:

    标签: c++ database


    【解决方案1】:
    1. Microsoft ODBC
    2. MFC ODBC 类,例如 CDatabase
    3. OleDB(通过 COM)。
    4. 您可以随时查看每个 RDBMS 的本地库(例如,SQL Server native library
    5. DAO(不要)。
    6. 第三方 ORM 提供商。

    我建议默认使用 ODBC 或 OleDB。原生库确实限制了你,DAO 不好玩,C++/Windows 的优秀 3rd-party ORM 并不多。

    【讨论】:

      【解决方案2】:

      虽然这个问题及其答案已经有好几年了,但对于像我这样在评估之旅中巡游的人来说,它们仍然很有价值。出于这个原因,我想添加 Qt C++ 框架的 QtSql 模块作为数据库连接的选项。

      请注意,我对 Qt 很熟悉,但对 QtSql 没有特别的经验。

      优点(如果您只是为其 QtSql 模块选择 Qt,也应该适用一些优点): Qt 是跨平台的。以我的经验,Qt 设计精良,使用起来非常直观,并且文档记录得非常好。它已经存在了很长时间,由一个活跃的社区维护并得到诺基亚的支持,因此它不会在一夜之间变得不可用。自 2009 年以来,Qt 已获得 LGPL 许可,因此即使对于商业应用程序,它也是一个真正的免费选择。

      缺点: Qt 并不小。您将在您的项目中引入新的类型,例如 QString。 Qt 是根据 LGPL 获得许可的,因此即使在商业应用程序中也需要确认它的使用。

      【讨论】:

        【解决方案3】:

        有一件事 - 如果速度很重要并且您的代码不需要可移植,那么使用本机库可能是值得的。

        我对 SQL Server 了解不多,但我知道 Oracle OCI 调用比使用 ODBC 更快。但是,它们将您绑定到 Oracle 的 SQL 版本。 SQL Server 以同样的方式是有意义的。

        【讨论】:

          【解决方案4】:

          POCO Data 库,它支持 ODBC、MySQL 和 SQLite。部分免费开源POCO C++ Libraries

          【讨论】:

            猜你喜欢
            • 2012-11-22
            • 2010-12-13
            • 2015-05-15
            • 1970-01-01
            • 2012-11-22
            • 1970-01-01
            • 1970-01-01
            • 2019-07-24
            • 1970-01-01
            相关资源
            最近更新 更多