-1

我正在考虑启动一个与多个 DBMS 进行通信的项目。尽管不能直接从 C/C++ 获得,但 JDBC 仍然具有吸引力,原因如下:

  1. 我的软件可以在 Windows/OSX/Linux 之间移植。在我看来,在多个架构上的每个平台上管理 ODBC 似乎非常麻烦。
  2. 我正计划用我的应用程序分发 JDBC 库。这似乎是一个更好的选择,尝试为多个环境分发每个 ODBC 驱动程序。
  3. 我对 JDBC 比对 ODBC 熟悉得多。
  4. 在某些情况下,似乎 JDBC 可能会得到更好的支持。

我几乎说服自己这是要走的路。但是,我不知道我对 ODBC 和 JNI 的缺乏经验是否导致我做出幼稚的结论。

请指教。

4

1 回答 1

0

我不会仅仅为了 ODBC 而涉及 JNI/Java。在 Windows 上,只需使用本机 ODBC API。在 *nix 上,unixodbc 运行良好。此外,还有第三方供应商,例如 Progress (DataDirect)。

我在 unixodbc 中看到的唯一问题(这并不是真正的 unixodbc 问题)是混合 Sybase ASE 和 Sybase IQ。Sybase 为这两个 DBMS 提供的驱动程序的构建方式不同,这使得它们在运行时与 x64 系统不兼容(一个构建时需要 32 位类型,另一个是 64 位类型,并且必须相应地构建 unixodbc 以匹配所需的驱动程序,并且您不能同时使用两者)。

我还建议使用抽象层,例如odbc++(遗憾的是,似乎没有得到积极维护 - 请注意最新的 odbc++ 具有开箱即用的 64 位兼容性问题)或OTL(正在积极维护)。

于 2013-05-31T02:28:50.630 回答