答案 0 :(得分:35)
您知道我使用并为unixODBC做出了贡献,我不使用iODBC。
unixODBC遵循MS ODBC驱动程序管理器,并且SQLWCHAR为2字节UCS2编码。 iODBC我相信使用wchar_t(这是基于尝试在DBD :: ODBC中支持iODBC)
许多ODBC应用程序支持unixODBC,例如Oracle,IBM和SAP的OpenOffice和ODBC驱动程序。我不确定iODBC。
unixODBC是线程安全的,包含用于保护不同级别句柄的标志。这曾经不是iODBC的情况(但现在可能已经改变了)。
两者都有支持论坛(unixODBC有3个)虽然我会说unixODBC的活动要活得多(我两个都是)。
unixODBC是GPL和LGPL。 iODBC是LGPL / BSD
在实践中没有太大的区别,但我认为你会发现unixODBC被更广泛地使用。
答案 1 :(得分:4)
我终于找到了一些更完整的答案......(请注意@mloskot - 如果您同意这个答案比另一个更准确和/或更完整,您可以更改您接受的答案)< /em>
iODBC 和 unixOBDC 基本上是 API 等价的,都是 Microsoft ODBC standard 的跨平台实现。 iODBC 灵活的 Unicode 支持包括 UCS-2、UTF-8、UCS-4。 iODBC 库通过 Big Sur (10.3.0) 捆绑到 macOS Panther (11.2.x) 中,并且可以构建和/或安装在 AIX、Solaris、HP-UX、任何 Linux 发行版、*BSD、其他类 Unix 操作系统等。 iODBC 长期以来一直是线程安全的,并且得到了 OpenLink Software(我的雇主)的积极维护和支持。
下表涵盖了最常见的比较问题(我应该添加哪些内容?),并且基于 iODBC 3.52.14,截至 2021 年 2 月(报告版本 03.52.1421.0217
) 和 unixODBC 2.3.9,截至 2020 年 9 月。
有关更详细的比较以及更花哨和详细的表格,请参阅 this spreadsheet
功能 | iODBC | UnixODBC |
---|---|---|
Unicode 支持 | ||
UCS-2 | YES | YES |
UCS-4 (a/k/a UTF-32) | YES | NO |
UTF-08 (a/k/a UTF-8) | YES | NO |
UTF-16 | YES | YES |
UTF-32 (a/k/a UCS-4) | YES | NO |
支持使用其他 SDK 开发的驱动程序和应用程序 |
||
支持使用 iODBC SDK 开发的驱动程序 | YES | NO |
支持使用 iODBC SDK 开发的应用 | YES | NO |
支持使用 unixODBC SDK 开发的驱动程序 | YES | YES |
支持使用 unixODBC SDK 开发的应用 | YES | YES |
支持使用 DataDirect SDK 开发的驱动程序 | YES | NO |
支持使用 DataDirect SDK 开发的应用 | YES | NO |
操作系统默认 DM | ||
macOS | YES | NO |
Linux | 部分 | 部分 |
类Unix | 部分 | 部分 |
操作系统支持 | ||
macOS | YES | 部分 |
Linux | YES | YES |
类Unix | YES | YES |
用户友好的原生 GUI 管理员 | ||
macOS | YES | 基于Qt |
Linux | 基于GTK和基于HTML | 基于Qt |
类Unix | 基于GTK和基于HTML | 基于Qt |
线程安全 | YES | YES |
支持 | ||
邮件列表 | YES | YES |
论坛 | YES | YES |
Github 存储库 | YES | YES |
SourceForge 存储库 | YES | YES |
开源许可 | ||
GPL | NO | programs |
LGPL | YES | libraries |
BSD | YES | NO |
SQLWCHAR
是 2 个字节的 UCS2 编码