Java JDBC 数据库编程与防 SQL 注入

一、JDBC 流程

// 1. 加载驱动(新版本可省) 2. 连接 3. 语句 4. 结果 5. 关闭
try (Connection c = DriverManager.getConnection(url, user, pwd);
     Statement st = c.createStatement();
     ResultSet rs = st.executeQuery("SELECT id,name FROM user")) {
    while (rs.next()) {
        System.out.println(rs.getInt("id") + rs.getString("name"));
    }
}

二、PreparedStatement(重要)

用 ? 占位、预编译,既防 SQL 注入 又提性能:

PreparedStatement ps = c.prepareStatement("SELECT * FROM user WHERE id = ?");
ps.setInt(1, 10);
ResultSet rs = ps.executeQuery();

三、事务

c.setAutoCommit(false) → 多次操作 → c.commit();异常 c.rollback()。注意连接用连接池(HikariCP)而非每次新建。