我試圖更新一些代碼時遇到了一個非常惱人的問題。有問題的代碼從本地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
如何http://stackoverflow.com/questions/2818491/is-there-a-64bit-driver-for-microsoft-access? – Fionnuala
只需使用32位Java VM運行您的程序。這將能夠訪問32位ODBC驅動程序。 –
Remou,我無法使用這些驅動程序,因爲他們要求我卸載32位版本的Office,這是我無法做到的。 a_horse_with_no_name,我coudn't找到一種方法,使NetBeans中的32位運行,我甚至使用JDK的32位版本重新安裝一切,但無濟於事。 – Zegpi