首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

JDBC-ODBC 橋接直連 Access 資料庫:無需 DataSource 的輕量級方案

     編輯:Java 程式設計入門

在輕量級 Java 應用、桌面工具、單元測試中,若不想引入連線池、JNDI、應用伺服器,可直接使用 JDBC-ODBC 橋接驅動 (sun.jdbc.odbc.JdbcOdbcDriver) 連接 Microsoft Access (.mdb/.accdb)。本文提供完整可運行代碼範例,並說明適用場景與遷移路徑。

完整代碼範例

import java.sql.*;

public class AccessDirectConnect {
    public static void main(String[] args) {
        // 1. JDBC-ODBC 連線字串:指定 ODBC 驅動名稱 + 檔案絕對路徑
        String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=D:\\projects\\demo.mdb";
        
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        
        try {
            // 2. 載入驅動類 (JDK 內建,無需外部 JAR)
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            
            // 3. 建立連線
            conn = DriverManager.getConnection(url);
            
            // 4. 執行查詢
            stmt = conn.createStatement();
            rs = stmt.executeQuery("SELECT player_mobile FROM mcp_swty_player");
            
            // 5. 處理結果集
            while (rs.next()) {
                System.out.println("Mobile: " + rs.getString("player_mobile"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 6. 關鍵:逆序關閉資源
            closeQuietly(rs);
            closeQuietly(stmt);
            closeQuietly(conn);
        }
    }
    
    private static void closeQuietly(AutoCloseable resource) {
        if (resource != null) {
            try { resource.close(); } catch (Exception ignored) {}
        }
    }
}

關鍵技術點解析

要素說明注意事項
驅動類sun.jdbc.odbc.JdbcOdbcDriverJDK 內建 (rt.jar),JDK 8 後移除,需遷移
URL 格式jdbc:odbc:driver={...};DBQ=path驅動名稱需與系統 ODBC 管理器中完全一致
DSN-free無需預先在控制台建立系統/用戶 DSN部署簡單,適合綠色軟體
平台限制僅限 Windows + 32-bit Office/Access Runtime64-bit JDK 需 64-bit Access 驅動,否則「找不到驅動」
並發能力極低 (Access 檔案鎖機制)不適合多用戶併發寫入場景

適用場景與遷移建議

✅ 適合場景

  • 桌面單機工具、數據導入/導出腳本
  • 單元/整合測試:臨時建立 .mdb 驗證 SQL 邏輯
  • 舊系統維護:無法引入新依賴的受限環境
  • 原型驗證:快速連接現有 Access 數據源

❌ 不適合場景

  • Web 應用、高併發、生產環境
  • 跨平台部署 (Linux/macOS 無 ODBC 驅動)
  • 大數據量、複雜查詢、事務密集型
  • JDK 9+ 環境 (驅動已移除)

現代遷移路徑

目標方案關鍵依賴優勢
Access 繼續使用UCanAccess (純 Java JDBC 驅動)ucanaccess-x.x.x.jar + jackcess + commons-lang + commons-logging跨平台、無 ODBC、支援 .accdb、Maven Central 可用
遷移至嵌入式資料庫H2 / Derby / SQLite (JDBC)h2.jar / derby.jar / sqlite-jdbc.jar效能強、標準 SQL、零配置、單元測試友好
遷移至客戶端-伺服器MySQL / PostgreSQL / SQL Server對應 JDBC 驅動企業級併發、安全、擴展、運維生態

UCanAccess 遷移範例 (推薦)

// Maven 依賴
// 
//   net.sf.ucanaccess
//   ucanaccess
//   5.0.1
// 

String url = "jdbc:ucanaccess://D:/projects/demo.mdb"; // 或 .accdb
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
Connection conn = DriverManager.getConnection(url);
// 後續 JDBC 代碼完全相容

總結

JDBC-ODBC 橋接提供了零依賴、零配置、直連 Access的便利,適合特定輕量場景。但受限於平台、併發、JDK 版本,生產環境強烈建議遷移至 UCanAccess 或嵌入式資料庫。理解這條演進路徑,能在技術債務重構、測試基礎設施建設、舊系統現代化中做出務實選擇。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved