[英]JDBC driver MS Access connection
我想用Java GUI程序連接我的MS訪問文件,但我有連接問題....
我有Windows 7 64b和ms office 2007.當我在控制面板中打開ODBC驅動程序管理器時,我沒有找到任何Microsoft Access驅動程序(也許當我啟動ODBC時開始運行64位ODBC,現在我認為正在運行32位ODBC。我讀了這個,我做了:“jdbc-odbc連接窗口7 64位機器.. 1.右鍵單擊數據源(ODBC)..轉到屬性更改下面的事情
目標[%SystemRoot%\\ SysWOW64 \\ odbcad32.exe]開始於:[%SystemRoot%\\ System32]
按回車鍵繼續作為管理員源: 源鏈接 “)現在,當我在conctrol pannel中啟動ODBC時,我可以看到驅動程序的屏幕截圖
我的程序代碼(我試過兩種方法,但我有同樣的錯誤):
public void Connect() {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
// String DatabaseFile = "D:java/Invertory.mdb";
// String DATABASE =
// "jdbc:odbc:Driver="
// + "{Microsoft Access Driver (*.mdb, *.accdb)};"
// + "DBQ=" + DatabaseFile;`enter code here`
String DATABASE ="jdbc:odbc:Driver= Microsoft Access Driver (*.mdb, *.accdb);DBQ=Invertory.mdb";
CONEX = DriverManager.getConnection(DATABASE);
} catch (Exception X) {
X.printStackTrace();
//JOptionPane.showMessageDialog(null,e);
}
}
錯誤
java.sql.SQLException:[Microsoft] [ODBC驅動程序管理器]未找到數據源名稱且未指定默認驅動程序
使用UCanAccess JDBC驅動程序:
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
Connection conn=DriverManager.getConnection("jdbc:ucanaccess://<mdb or accdb file path>",user, password);
for example:
Connection conn=DriverManager.getConnection("jdbc:ucanaccess://c:/pippo.mdb");
所以對於你的例子,它將是Connection conn=DriverManager.getConnection("jdbc:ucanaccess://"+path)
如果您使用的是Windows 64位,則可能需要轉到此路徑
C:/Windows/SysWOW64/odbcad32.exe
然后我注意到你正在使用直接路徑而不是創建新的System DSN
,你的直接路徑是正確的,直到訪問文件的路徑你必須給出如下的完整路徑:
jdbc:odbc:Driver = Microsoft Access Driver(* .mdb,* .accdb); DBQ = path / to / Invertory.mdb“
要獲取路徑,您可能需要使用具有方法的java.io.File
返回文件的絕對路徑,請參閱示例:
import java.sql.*;
public class TestConnection {
Connection con ;
Statement st ;
ResultSet rs ;
String db;
public TestConnection (){
try{
String path = new java.io.File("Invertory.mdb").getAbsolutePath();
db ="JDBC:ODBC:Driver=Microsoft Access Driver (*.mdb, *.accdb); DBQ="+path;
doConnection();
} catch(NullPointerException ex){
ex.printStackTrace();
}
}
public void doConnection(){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection(db);
st = con.createStatement();
rs = st.executeQuery("select * from Invertory");
while(rs.next()){
System.out.println(rs.getObject(1));
}
}catch(SQLException | ClassNotFoundException ex){
System.out.println(ex.toString());
}
}
public static void main(String...argS){
new TestConnection();
}
}
我回答了一個類似的問題, 在這里輸入鏈接描述 。
基本上那個時候:
從那時起,似乎有一個新的開源Ms-Access JDBC驅動程序Ms-Access JDBC驅動程序 。 我不知道它有多好。
您剛剛在代碼中遺漏了一些內容:
db ="JDBC:ODBC:Driver=Microsoft Access Driver (*.mdb, *.accdb); DBQ="+path;
你需要在Driver=
和)=;
之間添加{}
)=;
。 像這樣下面
db ="JDBC:ODBC:Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ="+path;
final String fileName = "c:/myDataBase.mdb"
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+fileName;
Connection con = DriverManager.getConnection(url,username,password);
問題是你應該運行Java 32位嘗試安裝最新的JDK,它會工作
我使用JDK版本“jdk-7u67-windows-i586.exe”運行它
在64位系統上,您應該:
如果您在NETBEANS中工作,那么在解壓縮ucanacess.zip文件后,使用項目的屬性窗口在類路徑中添加所有jar文件,單擊編譯選項卡並添加jar文件,然后編譯並測試應用程序。
JDBC-ODBC MS-ACCESS連接已停止在JDK8中工作。 我通過在同一台PC上安裝JDK7和JDK8來解決了這個問題,一旦安裝了JDK7,我就把它作為JDK版本分配給我在我的項目中使用如下Netbeans:
1.右鍵單擊列表中的項目>點擊屬性
2.在左導航樹上列出圖書館
3.CLICK按鈕管理平台>點擊按鈕添加平台...
4.FOLLOW WIZARD,盡管它顯示JAVA STANDARD EDITION點擊下一步
5.NAVIGATE到C:\\ Program Files(x86)\\ Java和SELECT JDK7的文件夾>點擊下一步
6.具有正確信息的現場自動填充...>然后單擊完成
7.從列表中選擇JDK平台>點擊關閉>確定
8.JDK7應該在圖書館包裝中顯示。
庫包中的JDK7單擊瀏覽器中的返回以查看圖像后返回此處...
從這里開始,一切都必須順利進行。
希望它能解決你的問題。
謝謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.