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

Java 連接 Oracle/MySQL 數據庫:JDBC 標準三步走、驅動下載、連接字符串詳解

     編輯:Java 相關知識

JDBC 連接數據庫是 Java 後端開發的入門必修課。本文提供 Oracle 與 MySQL 兩大主流數據庫的標準連接代碼、驅動坐標、連接 URL 參數詳解、常見錯誤排查,可直接複製到項目中作為工具類基礎。

JDBC 通用三步走

  1. 加載驅動:Class.forName("驅動全限定名")(JDBC 4.0+ 可省略,SPI 自動發現)。
  2. 獲取連接:DriverManager.getConnection(url, user, pass)。
  3. 使用連接:創建 Statement/PreparedStatement 執行 SQL,最後關閉資源。

Oracle 數據庫連接

Maven 依賴(官方 JDBC 驅動)

<dependency>
    <groupId>com.oracle.database.jdbc</groupId>
    <artifactId>ojdbc11</artifactId> <!-- JDK 11+ 用 ojdbc11,JDK 8 用 ojdbc8 -->
    <version>23.4.0.0</version>
</dependency>

舊版需從 Oracle 官網下載 ojdbc8.jar 手動 mvn install 到本地倉庫。

連接代碼模板

String url = "jdbc:oracle:thin:@//host:1521/service_name"; // 服務名模式(推薦)
// 或 SID 模式:jdbc:oracle:thin:@host:1521:sid
String user = "your_username";
String pass = "your_password";

try (Connection conn = DriverManager.getConnection(url, user, pass)) {
    // 業務邏輯
} catch (SQLException e) {
    e.printStackTrace();
}

URL 參數詳解

MySQL 數據庫連接

Maven 依賴

<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId> <!-- 8.0+ 新坐標 -->
    <version>8.3.0</version>
</dependency>

連接代碼模板

String url = "jdbc:mysql://localhost:3306/mydb?" +
             "useSSL=false&" +
             "serverTimezone=Asia/Shanghai&" +
             "characterEncoding=utf-8&" +
             "allowPublicKeyRetrieval=true"; // MySQL 8.0+ 公鑰獲取
String user = "root";
String pass = "password";

try (Connection conn = DriverManager.getConnection(url, user, pass)) {
    // 業務邏輯
}

關鍵 URL 參數對比(MySQL 5.1 vs 8.0+)

部分說明示例
jdbc:oracle:thinThin 驅動(純 Java,無需 Oracle Client),標準選擇—
@//host:port/service服務名連接(RAC/PDB 友好)@//192.168.1.100:1521/orclpdb
@host:port:sidSID 連接(傳統單實例)@192.168.1.100:1521:orcl
TNS_ADMIN使用 tnsnames.ora 別名連接url=jdbc:oracle:thin:@mydb; -Doracle.net.tns_admin=/path/to/tns

通用工具類封裝建議

public class JdbcUtil {
    private static final String URL = "...";
    private static final String USER = "...";
    private static final String PASS = "...";
    
    static {
        try { Class.forName("com.mysql.cj.jdbc.Driver"); } 
        catch (ClassNotFoundException e) { throw new ExceptionInInitializerError(e); }
    }
    
    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(URL, USER, PASS);
    }
    
    public static void close(Connection conn, Statement stmt, ResultSet rs) {
        closeQuietly(rs); closeQuietly(stmt); closeQuietly(conn);
    }
    private static void closeQuietly(AutoCloseable c) {
        if (c != null) try { c.close(); } catch (Exception ignore) {}
    }
}

生產環境必上:連接池

絕不在生產直接用 DriverManager(頻繁建連、無複用、無監控)。

  • HikariCP(Spring Boot 2+ 默認):極速、輕量、參數少。spring.datasource.hikari.* 配置。
  • Druid(阿里):監控強、SQL 防火墻、日誌分析。spring.datasource.druid.*。

常見錯誤速查

參數MySQL 5.1MySQL 8.0+說明
驅動類com.mysql.jdbc.Drivercom.mysql.cj.jdbc.Driver包名變更
時區不支持 serverTimezone必須設置 serverTimezone=Asia/Shanghai避免時間錯位
SSL默認 false默認 true,建議 useSSL=false(內網)減少握手開銷
公鑰獲取不需要allowPublicKeyRetrieval=truecaching_sha2_password 認證需公鑰
字符集characterEncoding=utf-8characterEncoding=utf-8統一 UTF-8

總結

JDBC 連接核心:正確驅動坐標 + 標準 URL 參數 + 連接池。Oracle 注意 Thin 驅動與服務名模式;MySQL 8.0+ 必須設置時區、SSL、公鑰參數。封裝工具類時務必try-with-resources 自動關閉,生產環境直接上 HikariCP/Druid。驅動版本與數據庫版本對齊,是避免 90% 連接問題的關鍵。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
錯誤原因解決
ClassNotFoundException: Driver驅動 JAR 未在 classpathMaven 依賴正確、scope=compile、打包含依賴
Communications link failureIP/端口錯、防火牆攔截、數據庫未啟動telnet host port、檢查 security group、bind-address=0.0.0.0
ORA-12514: TNS listener does not know service服務名/ SID 錯誤tnsping、lsnrctl status 確認服務名、PDB 需用服務名
Public Key Retrieval is not allowedMySQL 8.0 缺 allowPublicKeyRetrievalURL 加 allowPublicKeyRetrieval=true
Time zone value '...' unrecognizedMySQL 8.0 缺 serverTimezoneURL 加 serverTimezone=Asia/Shanghai