12

我想sql在我的应用程序中连接和使用数据库C++。我的应用程序需要存储一些数据(可以以表的形式存储),这些数据将不断增长并且需要在不同进程之间共享——所以我需要一个数据库。我之所以选择sql它是因为它对初学者是推荐的,而且我需要多个作家所以没有SQLite

在搜索时,我发现了以下选项(这些选项可能包括 ORMS、APIs 和 Drivers 并且可能其中一些选项甚至不应该包括在内 - 即我完全错误地理解了该选项;请纠正我)

  1. SQLAPI++ -来源(官方网站)
  2. MySQL 连接器/C++(那里也给出了一些优点。) -
  3. MySQL++
  4. 数据库
  5. SOCI
  6. Libodbc++(在 ODBC 之上运行)
  7. 数据库模板库-
  8. Oracle 模板库
  9. 将 sql.h 与 ODBC 一起使用:ODBC的
    选择
    MYSQL 连接器/ODBC
    b. EasySoft ODBC
    C. 其他一些

一些 SO 的线程可以帮助我找到这些选择:T1T2T3T4

我的问题

  1. 使用哪个选项以及何时使用?这些选项的优点/缺点?(可能基于performancelearning curvecompatibilitypresent support。)在这些选项中进行选择是否有任何基准建议。(我真的不知道这些选项,因此可能需要将其中一些选项组合在一起以使它们起作用,即,某些选项可能是相互依赖的。)
  2. 这些选项所需的工具集是什么。
  3. 如果使用任何ODBC依赖库,那么ODBC使用哪个。(上面的“其他一些”链接中提到了许多 ODBC。)
  4. 任何学习它们的来源。(对于某些选项,我已经提到了一个来源。)
  5. 还有什么我完全错过的吗?
  6. 如果我的应用程序在 中C怎么办?(这是因为我还需要使用 C 开发一个应用程序sql

我知道我问得太多了。请对任何特定部分提出建议。

4

1 回答 1

2

您需要考虑的主要问题是您需要在应用程序和数据库方面实现跨平台的程度。

如果您可能需要连接到多个关系数据库服务器(例如 Oracle 和 MySQL 或 Firebird),则使用 ODBC 可能会更好(因为值得我使用 UnixODBC)。我没有使用过 SQLAPI++ 或 SOCI,所以我不能说这些与 UnixODBC 相比如何。

使用 UnixODBC,您可以在部署中获得很多选择。很多时候,我实际上根本不安装 UnixODBC,而是将应用程序直接连接到 ODBC 驱动程序(如果特定实例只与单个数据库通信,这很有用,并且最大限度地减少了您需要安装的东西)。它也适用于 C++ 和 C。

对于 UnixODBC -> MS SQL Server,我们使用 FreeTDS 驱动程序。最初我担心将其投入生产,但实际上我发现有线协议已完全指定,因此这不仅仅是逆向工程黑客(而且我相信制作 FreeTDS 的人也做商业 EasySoft 驱动程序)。MySQL 本身提供了与 UnixODBC 兼容的驱动程序。

我没有尝试过 UnixODBC -> Oracle,因为我已经编写了一个直接的 OCI(即时客户端)接口并且我们一直使用它。

UnixODBC 比使用像 OCI 之类的有线协议方法要慢得多,但差异并不显着,无需担心。我们使用 OCI 的原因是 Oracle 为 Linux / AIX / Solaris 平台免费提供它,而我找不到这些平台的 ODBC oracle 驱动程序。

于 2012-07-18T11:36:38.607 回答