iODBC 和 unixODBC 之间的功能差异是什么?
There are two major Open Source platform independent implementation of the ODBC. It is iODBC and unixODBC.
Considering Unix as ODBC user platform and feature-wise, what are the real practical differences between these two implementations?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
只是为了让您知道我使用 unixODBC 并为它做出了贡献,但我不使用 iODBC。
Unicode 支持
unixODBC 遵循 MS ODBC 驱动程序管理器,并具有 2 字节 UCS2 编码的 SQLWCHAR。
iODBC 我相信使用 wchar_t (这是基于尝试在 DBD::ODBC 中支持 iODBC)
游标库
unixODBC 有一个,我不“认为”iODBC 有。
应用程序支持
许多 ODBC 应用程序都支持 unixODBC,例如来自 Oracle、IBM 和 SAP 的 OpenOffice 和 ODBC 驱动程序。我不确定 iODBC。
操作系统支持
iODBC 一直是 Mac 上使用最多的,因为 Apple 将其包含在内(尽管我相信它已从 Lion 中删除)。两者都可以从源代码构建,并且大多数 Linux 发行版都将两者打包(尽管 Novell/Suse 不这样做,因为它只分发 unixODBC)。
线程安全
unixODBC 是线程安全的,并且包含用于保护不同级别句柄的标志。 iODBC 过去并非如此(但现在可能已经改变)。
支持
两者都有支持论坛(unixODBC 有 3 个),尽管我想说 unixODBC 的论坛要活跃得多(我两个都支持)。
unixODBC的授权
是GPL 和LGPL。
iODBC 是 LGPL/BSD
在实践中没有太大区别,但我想你会发现 unixODBC 使用更广泛。
Just so you know I use and have contributed to unixODBC and I don't use iODBC.
Unicode support
unixODBC follows MS ODBC Driver manager and has SQLWCHARs as 2 bytes UCS2 encoded.
iODBC I believe uses wchar_t (this is based on attempting to support iODBC in DBD::ODBC)
cursor library
unixODBC has one, I don't "think" iODBC has.
application support
A lot of ODBC applications support unixODBC e.g., OpenOffice and ODBC drivers from Oracle, IBM and SAP. I'm not sure about iODBC.
OS support
iODBC has always been the most used on on Macs since Apple included it (although I believe it is removed from Lion). Both can be built from source and most Linux distributions package both (although not Novell/Suse which only distributes unixODBC).
thread safety
unixODBC is thread safe and includes flags to protect handles at different levels. This did not used to be the case with iODBC (but that might have changed now).
support
Both have support forums (unixODBC has 3) although I'd say the unixODBC ones are far more active (I'm on both).
Licensing
unixODBC is GPL and LGPL.
iODBC is LGPL/BSD
In practice there is not a lot of difference but I think you'll find unixODBC is more widely used.
我终于找到了一些时间来获得更完整的答案...(attn @mloskot - 如果您同意这个答案比另一个更准确和/或更完整,您可以更改您接受的答案)
iODBC 和 unixOBDC< /a> 基本上是等价的 API,两者都是Microsoft ODBC 标准。 iODBC 灵活的 Unicode 支持包括 UCS-2、UTF-8、UCS-4。 iODBC 库通过以下方式捆绑到 macOS Panther (10.3.0) Big Sur (11.2.x),并且可以构建和/或安装在系统, Solaris、HP-UX、任何 Linux 发行版、*BSD、其他类 Unix 操作系统等等。 iODBC 长期以来一直是线程安全的,并由 OpenLink Software(我的雇主)积极维护和支持。
下表涵盖了最常见的比较问题(我应该添加一些内容吗?),并且基于截至 2021 年 2 月的 iODBC 3.52.14(报告版本
03.52.1421.0217 code>) 和 unixODBC 2.3.9,截至 2020 年 9 月。
有关更详细的比较以及更奇特和详细的表格,请参阅 此电子表格
使用其他 SDK 开发的驱动程序和应用
备注
Unicode a/k /a 宽字符
SQLWCHAR
为 2 个字节UCS2 编码的SDK 锁定
I finally found some time for a more complete answer... (attn @mloskot -- you can change your accepted answer, if you agree that this one is more accurate and/or complete than the other)
iODBC and unixOBDC are basically API equivalent, both being cross-platform implementations of Microsoft's ODBC standard. iODBC's flexible Unicode support includes UCS-2, UTF-8, UCS-4. iODBC libraries are bundled into macOS Panther (10.3.0) through Big Sur (11.2.x), and may be built and/or installed on AIX, Solaris, HP-UX, any Linux distribution, *BSD, other Unix-like OS, and more. iODBC has been thread safe for a very long time, and is actively maintained and supported by OpenLink Software (my employer).
The table below covers the most common comparative questions (is there something I should add?), and is based on iODBC 3.52.14, as of February 2021 (reports version
03.52.1421.0217
), and unixODBC 2.3.9, as of September 2020.For a somewhat more detailed comparison, and a much more fancy and detailed table, see this spreadsheet
developed using other SDKs
Notes
Unicode a/k/a Wide Characters
SQLWCHAR
s are 2 bytes UCS2 encodedSDK lock-in