2016-11-18 56 views
3

情景:我已經安裝了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

回答

3

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

不可以。無法從64位JVM調用32位本機代碼。但是,ODBC應該是ODBC - 如果您有一個64位ODBC:JDBC驅動程序,那麼它應該工作從64位Java連接。

+0

作爲這個答案的後續,OP應該看看[這個](http://stackoverflow.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位本機代碼。 –

0

是,可以

  • 使用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