可以防止SQL注入,效率更好!
防止SQL注入的本质:把传递进来的参数当作字符,假设其中存在转义字符,就直接忽略,'会被直接转义
代码实现
public class Delete {
public static void main(String[] args){
Connection con = null;
PreparedStatement st = null;
try{
con = JdbcUtils.getConnection();
//区别:使用?占位符代替参数
String sql = "insert into users(id,'name','birthday')values(?,?,?)";
st = con.prepareStatement(sql);//预编译SQL,先写SQL,然后不执行
//手动给参数赋值
st.setInt(1,4);//id
st.setInt(2,"xwc");//name
//注意点:sql.Date 数据库 java.sql.Date()转化为sql时间
// util.Date Java new Date().getTime()获得时间戳
st.setDate(3,new java.sql.Date(new Date().getTime()));//birthday
//执行
int i = st.executeUpdate();
if(i>0) System.out.println("删除成功!");
}
catch(Exception e){
e.printStackTrace();
}
finally{
JdbcUtils.release(com,st,rs);
}
}
}