由于在书写sql语句时拼接时容易出错
举个栗子:
String sql = "insert into stu values("+stu.getId()+",'"+stu.getName()+"',"+stu.getAge()+")";
当用预编译语句时直接写成这样:
String sql = "insert into stu values(?,?,?)";
基本知识:
预编译语句通过PrepareStatement对象实现,通过调用SetXXX(index, value)方法来传递参数。
实例:
String sql = "insert into stu(id,name,age) values(?,?,?)";
prepareStatement ps = conn.prepareStatement(sql);
//设置sql语句的参数
ps.setInt(1, stu.getId());
ps.setString(2, stu.getName());
ps.setInt(3, stu.getAge());
//4.执行sql语句 该方法不用参数
ps.executeUpdate();
预编译性能优化:部分数据库支持预编译池
存储过程相关:
//1.连接数据库
Connection conn = JDBCUtil.getConn();
//2.调用存储过程
java.sql.CallableStatement cs = conn.prepareCall("{ call getStu(?,?)}");
//3.设置参数
cs.setInt(1, 3);
cs.registerOutParameter(2, Types.VARCHAR);
cs.execute();
String name = cs.getString(2);
System.out.println(name);
//4.释放资源
);