在sql语句里拼接字符串很麻烦也很费劲用PreparedStatement就可解决这种麻烦①创建PreparedStatement对象创建时必须传入一个sql语句String sql insert into users(username,password,phone_no,address,reg_date)values(?,?,?,?,?)“ PreparedStatement ps conn.prepareStatement(sql);②调用PreparedStatement对象的setXxx(int index,Object val)来设置占位符上本应该的数值③执行SQL语句executeUpdate或executeQuery方法执行查询语句Connection conn null; PreparedStatement psnull; ResultSet rs null; int count 0; try{ conn DBUtils.getConnection(); //准备sql语句 String sql insert into users(username,password,phone_no,address,reg_date)values(?,?,?,?,?); ps conn.prepareStatement(sql); ps.setString(1, u.getUsername()); ps.setString(2, u.getPassword()); ps.setString(3, u.getPhoneNo()); ps.setString(4, u.getAddress()); ps.setDate(5, new java.sql.Date(u.getRegDate().getTime())); count ps.executeUpdate(); }catch(Exception e){ e.printStackTrace(); }finally{ DBUtils.close(conn, ps, null); }总结PreparedStatement是Statement的子接口,它提供了可以用?占位符和替换占位符的真正数值的功能!setXxx(int index,Object val)方法中index的值是从1开始,对应占位符中的第一个?除开用PreparedStatement可以避免麻烦的sql语句的拼接外,重要的是使用它可以防止SQL注入攻击!sql注入攻击:用户名写a or password密码写:or 11就可以在不知道用户名和密码的情况下登录成功进入你的系统。