iODBC和unixODBC之间有什么功能差异?

时间:2011-09-25 21:41:53

标签: unix odbc unixodbc iodbc

ODBC有两个主要的开源平台独立实现。它是iODBCunixODBC

将Unix视为ODBC用户平台和功能,这两种实现之间的实际差异是什么?

2 个答案:

答案 0 :(得分:35)

您知道我使用并为unixODBC做出了贡献,我不使用iODBC。

Unicode支持

unixODBC遵循MS ODBC驱动程序管理器,并且SQLWCHAR为2字节UCS2编码。 iODBC我相信使用wchar_t(这是基于尝试在DBD :: ODBC中支持iODBC)

游标库

unixODBC有一个,我不“认为”iODBC有。

应用程序支持

许多ODBC应用程序支持unixODBC,例如Oracle,IBM和SAP的OpenOffice和ODBC驱动程序。我不确定iODBC。

操作系统支持

自从Apple收录以来,iODBC一直是Mac上最常用的(虽然我相信它已从Lion中移除)。两者都可以从源代码构建,大多数Linux发行版都可以打包(尽管不是Novell / Suse,它只分发unixODBC)。

线程安全

unixODBC是线程安全的,包含用于保护不同级别句柄的标志。这曾经不是iODBC的情况(但现在可能已经改变了)。

支持

两者都有支持论坛(unixODBC有3个)虽然我会说unixODBC的活动要活得多(我两个都是)。

许可

unixODBC是GPL和LGPL。 iODBC是LGPL / BSD

在实践中没有太大的区别,但我认为你会发现unixODBC被更广泛地使用。

答案 1 :(得分:4)

我终于找到了一些更完整的答案......(请注意@mloskot - 如果您同意这个答案比另一个更准确和/或更完整,您可以更改您接受的答案)< /em>

iODBCunixOBDC 基本上是 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

注意事项

Unicode a/k/a 宽字符

  • iODBC 支持并在所有 UCS-2、UCS-4、UTF-8、UTF-16、UTF-32 之间进行转换
  • unixODBC 遵循 MDAC,SQLWCHAR 是 2 个字节的 UCS2 编码

SDK 锁定

  • iODBC 支持使用 unixODBC SDK 和 DataDirect SDK 以及使用 iODBC SDK 开发的应用程序和驱动程序
  • unixODBC 仅支持使用 unixODBC SDK 开发的应用程序和驱动程序