1. 方便
PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES
SET SALARY = WHERE ID = ");
pstmt.setBigDecimal(1, 153833.00)
pstmt.setInt(2, 110592)
我们使用 作为占位符,使用setXxx设置参数。(从1开始数)
2.效率高
PreparedStatement的执行效率是比Statement快的(因为它是预编译的),这里指的是执行的那些语句可以用上面的含占位符的SQL语句表示。
3.防止注入
下面是个常见的SQL注入例子,
[sql]
String sql = "select * from table1"
+"where name='"+username
+"'and pwd='"+userpass+"'";
如果用户输入 'or true or'
就被解析为:
[sql]
select * from table
where name='' or true or '' and pwd=''
这样,SQL把true当作常量,就能登录了。但是,使用PreparedStatement可以防止这个问题。