jdbc中预编译语句PreparedStatement的深层分析

翻阅大大小小的博客,无论中外只要你搜索PreparedStatement这个关键字,得到的大多数结果是在重复执行一条语句多次的情况下PreparedStatement会获得比Statement更好的性能,辟如下文引用的这段文字。

选择PreparedStatement还是Statement取决于你要怎么使用它们. 对于只执行一次的SQL语句选择Statement是最好的. 相反, 如果SQL语句被多次执行选用PreparedStatement是最好的.
PreparedStatement的第一次执行消耗是很高的. 它的性能体现在后面的重复执行.

没错,jdbc中PreparedStatement的初衷除了防止sql注入以外,还有一个功能就是让用户在执行重复的sql能够提高运行效率,对于效率的提升主要体现在了省去了sql语句编译的时间。但是在实际的使用中,还是有不少门道的。

首先来看两段代码,测试的表结构如下:

id first second
bigint(11) AUTO_INCREMENT varchar(10) varchar(10)
public void preparedGet(int first) {
        Connection conn = getConnection();
        String sql = "select * from test_table where first = ?";

        PreparedStatement pst = null;
        ResultSet rs = null;
        try {
            pst = conn.prepareStatement(sql);
            pst.setString(1, "" + first);

            int loop = 0;
            while(loop < 5) {
                rs = pst.executeQuery();
                rs.close();
                loop++;
            }

            pst.close();
        } catch (SQLException e) {
            e.printStackTrace();
        } 
    }

public void simpleGet(int first) {
        Connection conn = getConnection();
        String sql = "select * from test_table where first = '" + first +  "'";

        Statement stmt = null;
        ResultSet rs = null;
        try {
            stmt = conn.createStatement();

            int loop = 0;
            whi
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值