Statement 与预编译要点
- Statement 适合固定 SQL,createStatement 后 executeQuery
- PreparedStatement 用 ? 占位,setXxx 按位置塞值
- 占位从 1 开始编号,顺序错会绑到错误列
- 预编译语句数据库只解析一次,重复执行更省
- 字符串用 setString,数字用 setInt/setDouble,类型要对
- 能用 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 计数,写错会抛索引越界。