如何使用JNI将C ODBC连接公开给JVM?

时间:2008-10-07 20:12:10

标签: java jdbc odbc java-native-interface

我正在使用调用API在现有的C应用程序中嵌入JRE,并且 我希望能够使用JDBC在该代码中使用数据库。这个 application是一个事务处理应用程序,和数据库 事务由应用程序的C部分中的代码管理,并且 java代码必须在该事务中运行。这意味着我无法打开一个 new 连接,我必须重新使用现有的连接。

那么,有没有办法为现有的ODBC连接句柄提供JDBC访问 在设置JRE时?也许是一些JDBC-ODBC桥,但与之不同 该名称的现有驱动程序,可以设置为使用现有的驱动程序 连接和交易。

我认为其他选择如下:

  • 为每个可能的C操作提供java等价物 申请(由于很多原因,这是不可取的 - 我们有一个 很多方法和重复它们是屁股的痛苦。

  • 编写我自己的JDBC驱动程序,它包装了与JNI的ODBC连接。当然,它是 是一个有趣的周末(月)项目,但我希望更快地完成一些事情 不止于此。

帮助我,Stack-Overflow,你是我唯一的希望!

2 个答案:

答案 0 :(得分:1)

不知道这是否有用,但是......我快速浏览了Sun的JDBC-ODBC桥的反编译源代码。好像你可以将JdbcOdbcConnection子类化,以便它用已知的连接句柄和已经打开的状态初始化它自己。这假设Java端的连接句柄是实际的ODBC连接句柄或指向连接对象的指针,并且JDBC-ODBC桥使用的ODBC库和代码在它们可以共享连接句柄的意义上是兼容的。

您需要检查Sun的许可证是否允许开发人员执行此类欺骗。

答案 1 :(得分:0)

Sun在JDK中提供JDBC-ODBC bridge

编辑:重读你已经知道的声音并且不想使用它。