选择哪个选项在C++中使用sql
Which option to select to use sql in C++
我想在C++
应用程序中连接并使用sql
数据库。我的应用程序需要存储一些数据(可以以表的形式存储),这些数据将不断增长,需要在不同的进程之间共享,所以我需要一个数据库。我选择sql
是因为它推荐给初学者,而且我需要多个作家,所以没有SQLite
。
在搜索中,我发现了以下选项(这些选项可能包括ORMS、API和驱动程序,其中一些选项甚至不应该包括在内,即我完全错误地理解了该选项;然后请纠正我):
- SQLAPI++-源代码(也是官方网站)
- MySQL连接器/C++(也有一些优点)-来源
- MySQL++
- CppDB
- SOCI
- Libodbc++(运行在ODBC之上)
- 数据库模板库-源
- Oracle模板库
- 将sql.h与ODBC结合使用:
ODBC选项:
a.MYSQL连接器/ODBC
b.EasySoft ODBC
c.其他一些
一些SO的线程帮助我找到这些选择:T1,T2,T3,T4。
我的问题:
-
使用哪个选项,时使用哪个选项这些选项的优点/缺点(可能基于
performance
、learning curve
、compatibility
、present support
。)是否有任何基准或建议可在这些选项中进行选择(我真的不知道这些选项,所以可能需要将其中一些选项组合在一起才能使其发挥作用,也就是说,其中一些选项是相互依赖的。) - 这些选项所需的工具集是什么
- 如果使用任何依赖于
ODBC
的库,则使用哪个ODBC
(在上面的"其他一些"链接中提到了许多ODBC。) - 任何学习它们的来源(对于一些选项,我已经提到了一个来源。)
- 还有什么是我完全错过的吗
- 如果我的应用程序位于
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驱动程序。
- 如何使用c++在VS 2019上运行SQL查询
- System.InvalidCastException - SQL to C++ - safe_cast<float>
- 在C++中调用 MS SQL 存储过程
- 尝试创建表会给出 SQL 逻辑错误
- 在 MySQL/Connector C++中使用 SQL 联接
- Qt PL/SQL - 赋值运算符 - 字符串缓冲区太小
- PostgresSQL - SQL Ready 语句与字符串转义,防止 SQL 注入攻击
- 在 Microsoft Access SQL 中调用自定义 DLL 函数时传递的内存地址无效
- 使用 SQLConfig数据源创建 SQL Server DSN 失败:关键字-值对无效
- 使用 Qt5 SQL 进行异步数据库访问的策略
- Qt/SQL - 从 QSqlQuery exec Stored Procedure 获取列类型和名称?
- 如何将QTime保存在SQL Server Express表中并读回?
- 为 Sql 服务器实现 odbc 包装器.将数据库数据读取为字符或要求驱动程序将数据转换为 C 类型
- 使用 python 或 c ++ 中的 sql 根据输入数据输出输出示例
- 无法使用 SQL VDI(虚拟设备接口)创建条带化备份
- sql记录集函数的状态设计模式
- Qt SQL LIKE语句返回错误
- 无法从 SQL Server 检索数据
- 如何在将Visual Studio C++控制台应用程序连接到Microsoft SQL Server时修复"
- 如何在 sql 查询中获取 soci::rowset<std::string>