32,并在同一时间在Java两种64位JDBC

问题描述:

情景:我已经安装了32位ODBC驱动程序连接到数据库A,和一个64位的ODBC驱动程序数据库B.32,并在同一时间在Java两种64位JDBC

我知道我可以连接到java x86中的32位ODBC驱动程序和java x64中的64位ODBC驱动程序,但是如果我需要在同一个Java应用程序中使用64位ODBC驱动程序和32位ODBC驱动程序,该怎么办?

我可以连接到Java中的32位ODBC驱动程序和64位ODBC驱动程序吗?

我很好奇它。

+0

你的问题有点不清楚,应该改写以纠正/澄清。 “ODBC:JDBC”表明你试图通过一个JDBC驱动程序(通过ODBC到JDBC桥)连接ODBC客户端应用程序,但是你所说的其他一切都表明你真的想要做的是创建一个Java JDBC应用程序通过几个ODBC驱动程序(通过JDBC到ODBC桥)连接。 – TallTed

+0

正确,已编辑。 – AndreaTaroni86

我可以连接到32位ODBC:JDBC和64位ODBC:Java中的JDBC?

不可以。无法从64位JVM调用32位本机代码。但是,ODBC应该是ODBC - 如果您有一个64位ODBC:JDBC驱动程序,那么它应该工作从64位Java连接。

+0

作为这个答案的后续,OP应该看看[这个](http://*.com/questions/10289655/how-to-connect-to-a-32-bit-access-database-from -64位JVM)。正如您已经提到的那样,无法通过64位Java应用程序连接到32位ODBC。 – px06

+0

这些都不是很准确。看到我的答案。 – TallTed

+0

@TallTed从技术上讲,这是完全准确的。你正在调用第二个JVM来充当桥梁;因此您仍然需要32位JVM(或至少一个32位ODBC驱动程序和某种主机)来运行32位本机代码。 –

是,可以

  • 使用64位ODBC驱动程序从32位JVM
  • 使用32位ODBC驱动程序从64位JVM
  • simultan eously使用64位ODBC驱动程序,并从同一个Java应用程序中的32位ODBC驱动程序,在任何一个32位或64位JVM

你只需要使用类型3 JDBC连接 - “多层”JDBC到ODBC桥 - 例如从my employerEnterprise Edition JDBC Driver for ODBC Data Sources,以弥补“位”差距。

类型3 JDBC到ODBC连接在Java虚拟机中使用Java应用程序放置一个“纯Java”JDBC驱动程序,并通过TCP/IP与一些基于C的ODBC客户端组件进行通信,这些组件位于“native “带有ODBC驱动程序的操作系统环境 - 它们不需要在相同的主机上,也不需要与JVM在同一主机上。

 
Type 3 JDBC Driver in 32-bit JVM 
    -> ... TCP/IP ... 
     -> 64-bit ODBC Bridge Middleware 
     -> 64-bit ODBC Driver 

 
Type 3 JDBC Driver in 64-bit JVM 
    -> ... TCP/IP ... 
     -> 32-bit ODBC Bridge Middleware 
     -> 32-bit ODBC Driver 

您可以选择使用类型1“单层” JDBC到ODBC桥如Lite Edition JDBC Driver for ODBC Data Sourcesmy employer的JVM和一个ODBC的位数匹配驱动程序(比如64位),并且只为其他(32位)ODBC驱动程序使用“多层”JDBC-ODBC桥。 请记住,Java 8 and later no longer include the Sun JDBC-to-ODBC Bridge (classname sun.jdbc.odbc.JdbcOdbcDriver, used jdbc:odbc:<dsn>;UID=<uid>;PWD=<pwd> URLs) in the JVM