簡體   English   中英

JDBC驅動程序MS Access連接

[英]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();
    }
}

我回答了一個類似的問題, 在這里輸入鏈接描述

基本上那個時候:

  1. 您可以通過JDBC-ODBC橋從32位Java連接到Ms-Access
  2. 您無法通過64位Java的JDBC-ODBC連接到32位Odbc驅動程序。 有消息告訴您,您只能從32位程序連接
  3. 雖然Microsoft確實提供了64位Ms-Access驅動程序,但它無法與Java的64位JDBC-ODBC驅動程序一起使用。

從那時起,似乎有一個新的開源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位系統上,您應該:

  1. 以admin accessdatabaseengine_64.exe運行
  2. 運行java - 7-64位 - jre。

如果您在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM