2013-12-12 40 views
0

我想在64位機器上使ms訪問與java無dsnless連接。我用的是32位以下代碼:我想在64位機器上使用ms訪問Java與64位機器上的dsnless連接

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
Connection MSA_con = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)}; Dbq=C:\\data\\data.mdb"); 

這個代碼工作僅在32位機器,現在我轉移到64位的機器在這裏這段代碼是給下面的錯誤:

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified 

我已經爲此做了很多RND,但無法解決它。對於64位機器,我不知道從哪裏獲得64位ODBC驅動程序以及如何將它安裝在我的機器上。我必須使用jdk 64位嗎?還是必須安裝Microsoft ACE驅動程序,還是應該使用其他連接字符串? 我的機器是64位窗口7最終,MS訪問2007年,jdk 32位。

+0

如果您的Java應用程序確實在64位Windows機器上的32位JVM下運行,那麼現有的連接字符串應該可以工作。讓您的Java應用程序向您顯示由System.getProperty(「sun.arch.data.model」)返回的值以進行驗證。 –

+0

你的其他評論說'System.getProperty(「sun.arch.data.model」)'是「沒有返回任何東西」。我的理解是它*必須*返回一些東西,無論是'32'還是'64',這取決於調用它的應用程序是在32位還是在64位JVM下運行。再試一次。 –

+0

是的,它的返回64 ..... – user3094295

回答

0

如果您的應用程序調用System.getProperty("sun.arch.data.model")並返回64,那麼您的應用程序在64位JVM下運行。在這種情況下,您在問題中引用的連接字符串將不起作用,因爲沒有舊版Microsoft Jet ODBC驅動程序的64位版本。您也無法下載並安裝新版Access數據庫引擎(ACE)驅動程序的64位版本,因爲您的機器上已具有32位版本。您需要將您的應用程序配置爲在32位JVM下運行。

相關問題