有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在C/C++中使用JNI来利用JDBC是个坏主意吗?

我正在考虑启动一个将与多个DBMS通信的项目。尽管直接从C/C++无法使用JDBC,但JDBC仍然具有吸引力,原因如下:

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

我几乎确信这是一条路要走。然而,我不知道我对ODBC和JNI的缺乏经验是否导致我做出天真的结论

请告知


共 (1) 个答案

  1. # 1 楼答案

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

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

    我还建议使用一个抽象层,比如odbc++(遗憾的是,似乎没有积极维护——请注意,最新的odbc++有64位兼容性问题),或者OTL(正在积极维护)