首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java JDBC 連接 MySQL 完整範例:從獲取連接到結果集遍歷的標準模板

     編輯:程式設計疑難解答

控制台程序查詢 MySQL 並輸出結果,需遵循「加載驅動 → 建立連接 → 創建 Statement → 執行查詢 → 處理 ResultSet → 關閉資源」標準流程,並使用 try-with-resources 確保資源釋放。

標準模板代碼 (Java 7+)

import java.sql.*;

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

    public static void main(String[] args) {
        String sql = "SELECT id, username, email, create_time FROM users WHERE status = 1";

        // try-with-resources 自動關閉 Connection、Statement、ResultSet
        try (Connection conn = DriverManager.getConnection(URL, USER, PASS);
             Statement stmt = conn.createStatement();
             ResultSet rs = stmt.executeQuery(sql)) {

            System.out.printf("%-5s %-15s %-30s %-20s%n", "ID", "Username", "Email", "Create Time");
            System.out.println("---------------------------------------------------------------");

            while (rs.next()) {
                int id = rs.getInt("id");
                String username = rs.getString("username");
                String email = rs.getString("email");
                Timestamp createTime = rs.getTimestamp("create_time");
                System.out.printf("%-5d %-15s %-30s %-20s%n", id, username, email, createTime);
            }

        } catch (SQLException e) {
            System.err.println("數據庫操作失敗: " + e.getMessage());
            e.printStackTrace();
        }
    }
}

關鍵點解析

步驟代碼說明
加載驅動無需顯式 `Class.forName`JDBC 4.0+ (MySQL Connector/J 5.1+) 支持 SPI 自動發現
獲取連接`DriverManager.getConnection`URL 含時區參數避免警告
執行查詢`stmt.executeQuery(sql)`返回 `ResultSet` 游標默認在第一行前
遍歷結果`while (rs.next())`每次調用移動到下一行,無數據返回 false
取值方法`getInt`、`getString`、`getTimestamp`按列名/索引取值,類型需匹配
資源關閉try-with-resources編譯器自動生成 finally 關閉代碼,防洩漏

進階:預編譯語句防注入

String sql = "SELECT * FROM users WHERE username = ? AND status = ?";
try (PreparedStatement ps = conn.prepareStatement(sql)) {
    ps.setString(1, "admin");
    ps.setInt(2, 1);
    try (ResultSet rs = ps.executeQuery()) { ... }
}

常見錯誤排查

  • `ClassNotFoundException`:未導入 MySQL 驅動 JAR (maven: `mysql:mysql-connector-java:8.0.33`)
  • `Communications link failure`:IP/端口錯誤、MySQL 未啟用、防火牆攔截、未配置 `bind-address=0.0.0.0`
  • `Public Key Retrieval is not allowed`:URL 添加 `allowPublicKeyRetrieval=true`
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved