BAD:
尽管这块代码能够正确执行,能够完成都应的业务逻辑的处理,但这个预处理语句使用是有问题的。因为这个SQL语句是动态拼接而来的,这样处理和Statement直接处理几乎一点区别也没有,一点也没体现出运用PrearedStatement的优势。
正确使用是以参数化的形式给preparedStatement传参数,而不是动态拼接SQL语句,如下:
GOOD:
因为以参数化的形式使用PreparedStatement,会对应SQL进行一个预编译,尤其是多次对数据库进行操作的话,这样能很大程度上提高执行的效率,而且这样方式能够预防SQL注入攻击(具体原因请参考我的博文:预处理为什么能防止SQL注入),所以开发过程总框架DAO层的方法如果有参数化的形式查询,就不要懒省事直接动态拼接SQL语句。
转载请注明—作者:Java我人生(陈磊兴) 原文出处:http://blog.csdn.net/chenleixing/article/details/44134237
欢迎关注我的博客,敬请关注代码典型缺陷分析系列下一篇!
如果过程中有讲解的不合理或者不对或者你有更好的想法,还望大牛们留下你们的宝贵文字,以便你、我、大家更好的学习与进步!