Statement 与预编译

Statement 和 PreparedStatement 都能发 SQL,但区别很大:前者拼字符串易被注入,后者用 ? 预编译既安全又快。学会 PreparedStatement 基本就够用。

Statement 与预编译要点

Statement 与预编译示例

						// 普通 Statement:仅适合无参数的固定语句
						Statement stmt = conn.createStatement();
						ResultSet rs = stmt.executeQuery("SELECT name FROM product");

						// PreparedStatement:带参、安全、可复用
						String sql = "SELECT name FROM product WHERE price = ?";
						PreparedStatement ps = conn.prepareStatement(sql);
						ps.setDouble(1, 100.00);
						ResultSet rs2 = ps.executeQuery();
避坑提醒:setXxx 的索引从 1 开始,不是 0;这是 Java 里少见的从 1 计数,写错会抛索引越界。
Statement 与预编译 · Java 连接 知识卡片
卡片 03 / 08 · Java 连接(1080×1440 速查卡片)

Java 连接知识点