2012-11-27 67 views
1

我嘗試了多種方法將我的數據庫從ms access 2010與java連接起來,但不起作用。無法將我的ms訪問連接到java

  1. 通過將屬性中的路徑更改爲%windir%\SysWOW64\odbcad32.exe,我將ODBC驅動程序路徑從64位設置爲32位。

  2. 我在本網站下載了AccessDatabaseEngine_x64.exe的Microsoft Access數據庫引擎2010 Redistributable。 http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=13255

我研究最多的網站,他們告訴我們,下載數據庫引擎2010年 但是,我仍然收到此錯誤:

[Microsoft] [ODBC driver manager] The specified DSN contains an architecture mismatch between the Driver and Application.

是否有人可以張貼一步一步引導解決我的問題?任何幫助將不勝感激。

當前源代碼

private Connection con; 
public void setUp(String dsn) { 
    try { 
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
    } catch (Exception e) { 
     System.out.println("Load driver error"); 
    } try { 
     String s = "jdbc:odbc:" + dsn; 
     con = DriverManager.getConnection(s, "", ""); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

public ResultSet readRequest(String dbQuery) { 
    ResultSet rs = null; 
    try { 
     Statement stmt = con.createStatement(); 
     rs = stmt.executeQuery(dbQuery); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return rs; 
} 
+0

你能告訴我們你的Java代碼? –

+0

private connection con; \t公共無效設置(字符串DSN){ \t \t嘗試{ \t \t \t的Class.forName( 「在sun.jdbc.odbc.JdbcOdbcDriver」); \t \t \t \t } \t趕上(例外五){ \t \t \t的System.out.println( 「加載驅動程序錯誤」); \t \t} \t \t嘗試{ \t \t \t \t \t的String = 「JDBC:ODBC:」 + DSN; \t \t \t con = DriverManager.getConnection(s,「」,「」); (例外e){ \t \t} catch(Exception e){ \t \t \t e。的printStackTrace(); \t \t} \t} \t公共結果集readRequest(字符串的DBQuery){ \t \t結果集RS = NULL; \t \t嘗試{ \t \t \t Statement stmt = con.createStatement(); \t \t \t rs = stmt.executeQuery(dbQuery); (例外e){ \t \t} catch(Exception e){ \t \t \t e.printStackTrace(); \t \t} \t \t return rs; \t} – GabrielHeng

+1

通常你會編輯你的原始問題以顯示源代碼。我會把它放在那裏,但你可能想要修正格式。 –

回答

0

連接64位JVM和64位MS-Access是大於64位的有點不同。這裏有人經歷了和你一樣的痛苦和written an article如何解決問題。

基本上,如果你使用64位庫,你需要改變你的連接字符串一點。使用此:

String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+fileName; 
con = DriverManager.getConnection(url,"",""); 

其中文件名是完整路徑訪問文件的字符串,而不是:

String s = "jdbc:odbc:" + dsn; 
con = DriverManager.getConnection(s, "", ""); 
+0

但是,這是我的代碼。 private connection con; \t公共無效設置(字符串DSN){ \t \t嘗試{ \t \t \t的Class.forName( 「在sun.jdbc.odbc.JdbcOdbcDriver」); \t \t \t \t } \t趕上(例外五){ \t \t \t的System.out.println( 「加載驅動程序錯誤」); \t \t} \t \t嘗試{ \t \t \t \t \t的String = 「JDBC:ODBC:」 + DSN; \t \t \t con = DriverManager.getConnection(s,「」,「」); (例外e){ \t \t} catch(Exception e){ \t \t \t e.printStackTrace(); \t \t} \t} \t公共結果集readRequest(字符串的DBQuery){ \t \t結果集RS = NULL; \t \t嘗試{ \t \t \t Statement stmt = con.createStatement(); \t \t \t rs = stmt.executeQuery(dbQuery); (例外e){ \t \t} catch(Exception e){ \t \t \t e.printStackTrace(); \t \t} \t \t return rs; \t} – GabrielHeng

+0

@GabrielHeng我根據您的反饋更新瞭解決方案。 –

+0

感謝@Nick Rippe幫助我取代源代碼 – GabrielHeng