preparedstatement:
1,可以采用占位符,
可读性和可维护性上来说.都比直接用Statement的代码高很多档次:
eg:
perstmt = con.prepareStatement("insert into tb_name (col1,col2,col2,col4) values (?,?,?,?)");
perstmt.setString(1,var1);
perstmt.setString(2,var2);
perstmt.setString(3,var3);
perstmt.setString(4,var4);
perstmt.executeUpdate();
2、预编译,提高性能:所以语句在被DB的编译器编译后的执行代码被缓存下来,那么下次调用时只要是相同的预编译语句就不需要编译,只要将参数直接传入编译过的语句执行代码中。
3、防止sql注入。
使用预编译语句,传入的任何内容就不会和原来的语句发生任何匹配的关系,一定程度上防止了sql注入。
如果使用普通的statement,有可能要对drop等做费尽心机的判断和过滤。
附:callablestatement提供了对输出和输入/输出参数(INOUT)的支持;