选择哪个选项在C++中使用sql

Which option to select to use sql in C++

本文关键字:sql C++ 选项 选择      更新时间:2023-10-16

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

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

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

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

我的问题

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

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

您需要考虑的主要问题是在应用程序和数据库端需要如何跨平台。

如果您可能需要连接到多个关系数据库服务器(例如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平台免费提供OCI,而我找不到这些平台的ODBC Oracle驱动程序。