看清preparedstatement与statement的一点区别

本文探讨了PreparedStatement与Statement在执行SQL命令时的区别,特别是在性能提升和防止SQL注入方面。前者能够预编译SQL命令并重复使用,提高执行效率;同时通过参数化查询避免了SQL注入风险。

二者之间的最大差别无疑是由prepared引起的.http://baike.baidu.com/view/890310.htm

prepared[prɪ'pɛrd]

[词典释义]

a. 1. 有准备的 2. (食物等)经过调制的

源文档 <http://www.baidu.com/baidu?word=prepared&tn=myie2&ch=4>

与此相关程度最大的,便是在执行SQL命令的时候,无论多少次地使用同一个SQL命令,PreparedStatement都只对它解析和编译一次(这就是预编译的好处体现),而比较于Statement这个普通的对象,每次执行同一个SQL命令都会重新对其进行解析和编译。

这样便带来了有关数据库性能的问题讨论,使用PreparedStatement执行大量SQL命令时效率性能要比Statement对象强上一些。

我们都知道SQL注入问题,也就是说在一些公共的Web站点上,由于网站设计者的疏忽等等,使得恶意用户可以利用一些SQL语句技巧拼接字符串,进而删除用户数据或破坏Web站点正常运行。

PreparedStatement对象的应用中,我们可以使用参数传递具体的数值,规避这种恶意用户通过输入非法字符串而破坏Web系统的情况。同样,这是Statement对象所不具有的一点。

String sql ="select * from t_user where name=?"; PreparedStatement pstmt = null; ResultSet rs = null; try{ pstmt = conn.prepareStatement(sql); pstmt.setInt(1, "lfsfxy9"); rs = pstmt.executeQuery(); }finally{ }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值