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

JDBC 連線 MySQL 實戰:從載入驅動到 CRUD 完整範例

     編輯:Java 綜合教學

前言

雖然現代開發多使用 ORM 框架(MyBatis、Hibernate、JPA),但理解 JDBC 底層原理對排查效能問題、設計連線池、處理特殊 SQL 場景至關重要。本文以最原始的 JDBC API 示範連線 MySQL、執行查詢的完整流程。

環境準備

  • JDK 8+
  • MySQL 5.7+
  • MySQL Connector/J 驅動包(mysql-connector-java-5.1.x.jar 或 8.x 版本)

核心步驟解析

  1. 載入驅動:Class.forName("com.mysql.cj.jdbc.Driver")(8.x 版本),舊版為 com.mysql.jdbc.Driver。
  2. 建立連線:DriverManager.getConnection(url, user, password),URL 格式 jdbc:mysql://host:port/dbname?useSSL=false&serverTimezone=UTC。
  3. 建立 Statement:PreparedStatement 防 SQL 注入,支援參數化查詢。
  4. 執行 SQL:executeQuery()(查詢)、executeUpdate()(增刪改)。
  5. 處理結果集:ResultSet 逐行讀取,getString()、getInt() 等取值。
  6. 釋放資源:finally 區塊或 try-with-resources 關閉 ResultSet、Statement、Connection。

完整程式碼範例

public class JdbcDemo {
    private static final String URL = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC";
    private static final String USER = "root";
    private static final String PASSWORD = "";

    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(URL, USER, PASSWORD);
    }

    public static List<String> queryUserNames() {
        String sql = "SELECT user_name FROM user";
        List<String> names = new ArrayList<>();
        try (Connection conn = getConnection();
             PreparedStatement ps = conn.prepareStatement(sql);
             ResultSet rs = ps.executeQuery()) {
            while (rs.next()) {
                names.add(rs.getString("user_name"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return names;
    }

    public static void main(String[] args) {
        List<String> list = queryUserNames();
        list.forEach(System.out::println);
    }
}

常見坑點提醒

  • MySQL 8.0+ 驅動類名、URL 參數(useSSL、serverTimezone、allowPublicKeyRetrieval)與 5.x 不同。
  • 生產環境務必使用連線池(HikariCP、Druid),避免頻繁建立/銷毀連線的開銷。
  • 大量資料查詢時,設定 fetchSize 或使用游標避免 OOM。
  • 異常處理要區分業務異常與系統異常,避免吞沒堆疊追蹤。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved