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

JDBC 實現數據庫增刪改查 (CRUD) 完整可運行代碼

     編輯:程式設計綜合問答

準備工作

  • MySQL 驅動包 mysql-connector-java.jar 加入 classpath。
  • 數據庫建表示例:CREATE TABLE user(id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20), age INT);

通用工具類


import java.sql.*;
public class DBUtil {
    static final String URL = "jdbc:mysql://localhost:3306/test?useSSL=false&characterEncoding=utf8";
    static final String USER = "root";
    static final String PASS = "123456";

    static { try { Class.forName("com.mysql.cj.jdbc.Driver"); } catch (Exception e) { e.printStackTrace(); } }

    public static Connection getConn() throws SQLException {
        return DriverManager.getConnection(URL, USER, PASS);
    }
    public static void close(ResultSet rs, Statement st, Connection conn) {
        try { if (rs != null) rs.close(); } catch (Exception e) {}
        try { if (st != null) st.close(); } catch (Exception e) {}
        try { if (conn != null) conn.close(); } catch (Exception e) {}
    }
}

CRUD 示例


public class UserDao {
    // 增
    public void add(User u) {
        String sql = "INSERT INTO user(name,age) VALUES(?,?)";
        try (Connection conn = DBUtil.getConn();
             PreparedStatement ps = conn.prepareStatement(sql)) {
            ps.setString(1, u.getName());
            ps.setInt(2, u.getAge());
            ps.executeUpdate();
        } catch (Exception e) { e.printStackTrace(); }
    }
    // 刪
    public void delete(int id) { /* UPDATE/DELETE 同理用 PreparedStatement */ }
    // 改
    public void update(User u) { /* ... */ }
    // 查
    public List queryAll() {
        List list = new ArrayList<>();
        String sql = "SELECT * FROM user";
        try (Connection conn = DBUtil.getConn();
             PreparedStatement ps = conn.prepareStatement(sql);
             ResultSet rs = ps.executeQuery()) {
            while (rs.next()) {
                User u = new User();
                u.setId(rs.getInt("id"));
                u.setName(rs.getString("name"));
                u.setAge(rs.getInt("age"));
                list.add(u);
            }
        } catch (Exception e) { e.printStackTrace(); }
        return list;
    }
}

關鍵點

  • 統一用 PreparedStatement 防 SQL 注入、自動處理類型轉換。
  • Java 7+ try-with-resources 自動關閉資源,避免洩漏。
  • 異常打印堆棧,生產環境建議用日志框架記錄。

參考博客:JDBC 操作 MySQL 親測可用

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