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

JDBC-ODBC Bridge 字符集參數設定範例

     編輯:Java 相關知識

背景

JDBC-ODBC Bridge(sun.jdbc.odbc.JdbcOdbcDriver)是早期 Java 連接 ODBC 資料來源(如 Access、SQL Server、舊版 MySQL)的橋接方案。注意:Java 8 起已移除此驅動程式,現代專案請使用各資料庫原生 JDBC 驅動。本文僅供維護舊系統參考。

字符集參數關鍵點

ODBC 連線屬性中,charSet 參數指定字符編碼,常見值:

  • gb2312 / GBK:簡體中文
  • big5:繁體中文
  • utf-8:Unicode(視 ODBC 驅動支援度而定)

完整程式碼範例

import java.sql.*;
import java.util.Properties;

public class OdbcCharsetDemo {
    public static void main(String[] args) {
        if (args.length == 0) {
            System.out.println("用法: java OdbcCharsetDemo \"SQL 陳述式\"");
            return;
        }

        try {
            // 1. 載入驅動
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

            // 2. 設定連線屬性(關鍵:charSet)
            Properties props = new Properties();
            props.put("user", "");           // 使用者名稱
            props.put("password", "");       // 密碼
            props.put("charSet", "gb2312");  // 字符集設定!

            // 3. 建立連線("chinese" 為 ODBC 系統 DSN 名稱)
            Connection conn = DriverManager.getConnection("jdbc:odbc:chinese", props);

            // 4. 執行 SQL
            Statement stmt = conn.createStatement();
            stmt.execute(args[0]);  // 傳入的 SQL 陳述式

            System.out.println("執行成功");

        } catch (ClassNotFoundException e) {
            System.err.println("找不到 JDBC-ODBC Bridge 驅動,Java 8+ 已移除");
        } catch (SQLException e) {
            e.printStackTrace();
            System.err.println("SQL 錯誤碼: " + e.getErrorCode());
        }
    }
}

ODBC DSN 設定步驟(Windows)

  1. 開啟「ODBC 資料來源管理員」(odbcad32.exe)
  2. 選擇「系統 DSN」索引標籤 → 新增
  3. 選擇對應驅動程式(如 Microsoft Access Driver、SQL Server 驅動等)
  4. 設定資料來源名稱(DSN):chinese
  5. 指定資料庫檔案/伺服器、認證資訊

常見問題與替代方案

中文亂碼排查

  1. 確認資料庫實際儲存編碼
  2. 確認 ODBC 驅動程式版本支援指定 charSet
  3. 嘗試 props.put("charSet", "GBK") 或 utf-8
  4. 若無效,考慮在 SQL 層面轉換或應用層轉碼

現代替代方案(強烈建議)

資料庫原生 JDBC 驅動Maven 坐標
MySQLcom.mysql.cj.jdbc.Drivermysql:mysql-connector-j:8.0.33
PostgreSQLorg.postgresql.Driverorg.postgresql:postgresql:42.6.0
SQL Servercom.microsoft.sqlserver.jdbc.SQLServerDrivercom.microsoft.sqlserver:mssql-jdbc:12.4.2
Oracleoracle.jdbc.OracleDrivercom.oracle.database.jdbc:ojdbc11:23.4.0.0
Access (UCanAccess)net.ucanaccess.jdbc.UcanaccessDrivercom.healthmarketscience.jackcess:jackcess:4.0.4

原生驅動連線字串範例(MySQL):

jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Taipei

總結

JDBC-ODBC Bridge 透過 Properties.put("charSet", "編碼") 設定字符集。但此技術已淘汰,新專案請直接使用資料庫原生 JDBC 驅動,在連線 URL 中指定 characterEncoding 參數,並確保資料庫、連線、應用程式全鏈路編碼一致(建議 UTF-8)。

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