2012-09-24 37 views
2

我試圖更新一些代碼時遇到了一個非常惱人的問題。有問題的代碼從本地MS訪問文件(* .mdb)中讀取一些(實際上很多)信息,然後對這些數據執行一些操作(只是簡單的東西)。請記住,我只需要讀取數據庫,僅此而已。閱讀MS Access數據庫沒有OBDC驅動

問題是我試圖部署此程序在x64操作系統(主要是win7)中工作,我無法訪問32位ODBC驅動程序。

這是訪問數據庫的代碼的一部分,variavle「路徑」是包含在MDB文件的絕對路徑,正如我所說,這個文件是當地的一個字符串。

public void openConection() 
{ 
    try 
    { 
     Properties props = new Properties(); 
     props.put ("charSet", "ISO-8859-1"); 
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
     String dbURL = "jdbc:odbc:Driver={Microsoft AccessDriver (*.mdb)};DBQ="; 
     dbURL += this.path + ";DriverID=22;READONLY=false)"; 
     this.connection = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft AccessDriver (*.mdb)};DBQ=" + this.path, props); 
     this.statement = this.connection.createStatement(); 
     System.out.println("Success"); 
    }catch(Exception e) 
    { 
      System.out.println("Error :" + e); 
    } 
} 

這引發以下錯誤:

[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

的問題(據我可以告訴)是這段代碼:

("jdbc:odbc:Driver={Microsoft AccessDriver (*.mdb)};DBQ=" + this.path, props 

如果我是正確的,這會嘗試將java jdbc橋接到MS Access ODBC,它是一個32位驅動程序,因此無法通過該程序訪問。我試着用Google搜索我的問題,但沒有找到任何可以幫助的東西,我找到了64位MS Access驅動程序,但它需要卸載32位版本的Office。

另外,我想,以避免不必爲此創建DSN,因爲這個程序必須給予了很多的人誰不知道該怎麼做。

謝謝。

Zegpi

+1

如何http://stackoverflow.com/questions/2818491/is-there-a-64bit-driver-for-microsoft-access? – Fionnuala

+0

只需使用32位Java VM運行您的程序。這將能夠訪問32位ODBC驅動程序。 –

+0

Remou,我無法使用這些驅動程序,因爲他們要求我卸載32位版本的Office,這是我無法做到的。 a_horse_with_no_name,我coudn't找到一種方法,使NetBeans中的32位運行,我甚至使用JDK的32位版本重新安裝一切,但無濟於事。 – Zegpi

回答

2

您可以嘗試使用Java API直接從文件中讀取數據。那裏有幾個圖書館。你可以試試Jackcess。免費。

+0

這正是我所期待的,會盡快嘗試。謝謝。只要我知道它的工作原理,我就會讓你知道(並接受答案)。 – Zegpi

+0

我終於有時間來測試它,它工作。謝謝! – Zegpi