36

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

考虑到 Unix 作为 ODBC 用户平台和功能,这两种实现之间真正的实际区别是什么?

4

2 回答 2

40

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

Unicode 支持

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

游标库

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

应用支持

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

操作系统支持

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

线程安全

unixODBC 是线程安全的,并包含用于保护不同级别的句柄的标志。iODBC 过去并非如此(但现在可能已经改变)。

支持

两者都有支持论坛(unixODBC 有 3 个),尽管我会说 unixODBC 的更活跃(我都在)。

许可

unixODBC 是 GPL 和 LGPL。iODBC 是 LGPL/BSD

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

于 2011-09-26T08:33:17.647 回答
4

我终于找到了一些时间来获得更完整的答案......(attn @mloskot - 如果您同意这个答案比另一个更准确和/或更完整,您可以更改您接受的答案)

iODBCunixOBDC基本上是 API 等效的,都是 Microsoft 的ODBC 标准的跨平台实现。iODBC 灵活的 Unicode 支持包括 UCS-2、UTF-8、UCS-4。iODBC 库通过 Big Sur ( 11.2.x ) 捆绑到 macOS Panther ( 10.3.0 ) 中,并且可以在 AIX、Solaris、HP-UX、任何 Linux 发行版、*BSD、其他类 Unix 操作系统上构建和/或安装, 和更多。iODBC 长期以来一直是线程安全的,并且由OpenLink Software(我的雇主)积极维护和支持。

下表涵盖了最常见的比较问题(有什么我应该补充的吗?),并且基于截至 2021 年 2 月的 iODBC 3.52.14(报告版本03.52.1421.0217)和截至 2020 年 9 月的 unixODBC 2.3.9。

如需更详细的比较,以及更精美、更详细的表格,请参阅此电子表格

特征 iODBC UnixODBC
Unicode 支持
    UCS-2 是的 是的
    UCS-4(a/k/a UTF-32) 是的
    UTF-08 (a/k/a UTF-8) 是的
    UTF-16 是的 是的
    UTF-32(a/k/a UCS-4) 是的
支持
使用其他 SDK 开发的驱动程序和应用程序
    支持使用 iODBC SDK 开发的驱动程序 是的
    支持使用 iODBC SDK 开发的应用程序 是的
    支持使用 unixODBC SDK 开发的驱动程序 是的 是的
    支持使用 unixODBC SDK 开发的应用程序 是的 是的
    支持使用 DataDirect SDK 开发的驱动程序 是的
    支持使用 DataDirect SDK 开发的应用程序 是的
操作系统默认 DM
    苹果系统 是的
    Linux 部分的 部分的
    类 Unix 部分的 部分的
操作系统支持
    苹果系统 是的 部分的
    Linux 是的 是的
    类 Unix 是的 是的
用户友好的本机 GUI 管理员
    苹果系统 是的 基于 Qt
    Linux 基于 GTK 和基于 HTML 基于 Qt
    类 Unix 基于 GTK 和基于 HTML 基于 Qt
线程安全 是的 是的
支持
    邮件列表) 是的 是的
    论坛 是的 是的
    Github 仓库 是的 是的
    SourceForge 存储库 是的 是的
开源许可
    GPL 程式
    LGPL 是的 图书馆
    BSD 是的

笔记

Unicode a/k/a 宽字符

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

SDK 锁定

  • iODBC 支持使用 unixODBC SDK 和 DataDirect SDK 开发的应用程序和驱动程序以及使用 iODBC SDK 开发的应用程序和驱动程序
  • unixODBC 仅支持使用 unixODBC SDK 开发的应用程序和驱动程序
于 2021-02-17T18:22:23.547 回答