2013-03-24 238 views
0

我正在使用MS Access作爲Web應用程序的後端。
由於我使用的64位操作系統,我的路徑在ODBC(數據源)更新爲sysWOW64 ...但我還是我得到一個錯誤:MS Access ODBC連接

org.apache.jasper.JasperException: javax.servlet.ServletException: 
java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified 

,我使用的代碼是:

String database="G:\\databs.mdb"; 
String url="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + database+";DriverID=22;READONLY=true"; 

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
Connection con=DriverManager.getConnection(url,"",""); 
Statement stmt=con.createStatement(); 

回答

0

你的問題表明您已經知道了sysWOW64子系統的,所以請記住,在64位的Windows機器上有兩個「ODBC管理器」應用程序...

C:\Windows\System32\odbcad32.exe 64-b它的應用,並

C:\Windows\SysWOW64\odbcad32.exe的32位世界

...(是的,命名似乎有點落後),並在64位機器上,你可以從Control Panel > Administrative Tools看到一個是64位一個。

您在其中創建的系統DSN在另一箇中不可見。在爲特定應用程序配置DSN時,您必須「注意自己的位置」。 :)

+0

:先生,你可以更詳細..我需要指定的dsn ..爲什麼錯誤是如此呢? – Jayanth 2013-03-24 22:48:49

+0

@Jayanth(1)re:「我需要在哪裏指定dsn」 - 您需要確定您的應用程序是在32位還是在64位空間中運行,然後運行相應的「ODBC Administrator」應用程序創建你的DSN。 (2)re:「爲什麼錯誤是如此」 - 正如我的答案所暗示的,有時32位和64位「世界」不能看到對方。如果您的32位應用程序需要系統DSN並且您在64位「世界」中創建它,那麼您的應用程序將不知道它存在。 – 2013-03-24 22:59:43

0

問題不在於機器64位,它是你的JVM 64位。如果是這樣,使用64位管理員,如果不使用32位的管理員(因爲你知道他們都在哪裏)。