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

时间:2012-07-18 10:29:21

标签: c++ sql c database odbc

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

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

  1. SQLAPI++ - Source(也是官方网站)
  2. MySQL Connector/C++(此处也有一些优点。) - Source
  3. MySQL++
  4. CppDB
  5. SOCI
  6. Libodbc++(在ODBC之上运行)
  7. Database Template Library - Source
  8. Oracle Template Library
  9. 使用带有ODBC的sql.h:
      ODBC的选择:
       一个。 MYSQL Connector/ODBC
       湾EasySoft ODBC
       C。 Some Others
  10. 一些SO的主题可以帮助我找到这些选择:T1T2T3T4

    我的问题

    1. 使用哪个选项,这些选项的优点/缺点(可能基于performancelearning curvecompatibilitypresent support。)是否有基准建议用于选择这些选项。 (我真的不知道这些选项,因此可能需要将这些选项中的一些组合在一起以使它们起作用,也就是说某些选项可能是相互依赖。)< / em>
    2. 这些选项所需的工具集是什么。
    3. 如果使用任何ODBC依赖库,则使用哪个ODBC(上面的链接'Some Others'中提到了很多ODBC。)
    4. 任何学习它们的来源。 (对于我已经提到的一些选项来源。)
    5. 还有什么我错过了吗?
    6. 如果我的应用程序位于 C ,该怎么办? (这是因为我还需要在C中开发一个使用sql)的应用程序
    7. 我知道我问得太多了。请为任何特定部分提供建议。

1 个答案:

答案 0 :(得分:2)

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

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

使用UnixODBC,您可以在部署中获得相当多的选择。通常,我根本不安装UnixODBC,而是将应用程序直接连接到ODBC驱动程序(如果特定实例只与单个数据库通信,并且最小化您需要安装的内容,这非常有用)。它也适用于C ++和C.

使用UnixODBC - &gt; MS SQL Server,我们使用FreeTDS驱动程序。最初我担心这会投入生产,但实际上我发现有线协议是完全指定的,所以这不仅仅是一个反向工程黑客(而且我相信制作FreeTDS的人也会做商业化的EasySoft驱动程序)。 MySQL自己提供与UnixODBC兼容的驱动程序。

我还没试过UnixODBC - &gt; Oracle,因为我已经编写了一个直接的OCI(即时客户端)接口,我们一直使用它。

UnixODBC比使用像OCI这样的有线协议方法稍慢,但差别不足以担心。我们使用OCI的原因是Oracle为Linux / AIX / Solaris平台免费提供它,而我找不到这些平台的ODBC oracle驱动程序。