选择在C++中使用sql的选项

Abh*_*pta 11 c c++ sql database odbc

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

在搜索时我发现了以下选项(这些选项可能包括ORMS,API和驱动程序,可能有些选项甚至不应包括在内 - 即理解该选项时我完全错误;请纠正我):

  1. SQLAPI ++ - 来源(ALSO官方网站)
  2. MySQL Connector/C++(也有一些优点.) - 来源
  3. MySQL的++
  4. CppDB
  5. SOCI
  6. Libodbc ++(在ODBC之上运行)
  7. 数据库模板库 - 来源
  8. Oracle模板库
  9. 在ODBC中使用sql.h:ODBC的
    选择:
    a.MYSQL连接器/ ODBC
    b.EasySoft ODBC
    c.其他人

一些SO的线程帮助我找到这些选择:T1,T2,T3,T4.

我的问题:

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

我知道我问的太多了.请对任何特定部分给出建议.

asc*_*99c 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 驱动程序。