zoukankan      html  css  js  c++  java
  • Statement及PreparedStatement执行多个sql

        这两个对象的区别:
    1.Statement它更适合执行不同sql的批处理,它没有提供预处理功能,性能比较低。
    2.PreparedStatement它适合执行相同的批处理,它提供了预处理功能,属性比较高。 
              /**
          * @param args
          * @throws SQLException
          * @throws ClassNotFoundException
          */
         public static void main(String[] args) throws ClassNotFoundException,
                    SQLException {
                // 定义sql 语句
               String sql1 = "create table person(id int,name varchar(20))";
               String sql2 = "insert into person values(1,'tom')";
               String sql3 = "insert into person values(2,'fox')";
               String sql4 = "insert into person values(3,'tony')";
               String sql5 = "update person set name='张三' where id=1";
               String sql6 = "delete from person where id=3";
     
               Connection conn = jdbcUtils.getConnection();
               Statement st = conn.createStatement();
     
                // 添加批处理sql
               st.addBatch(sql1);
               st.addBatch(sql2);
               st.addBatch(sql3);
               st.addBatch(sql4);
               st.addBatch(sql5);
               st.addBatch(sql6);
     
                // 执行批处理sql
               st.executeBatch();
               st.clearBatch();
               st.close();
                conn.close();
     
         }
     
     
    使用版本高一点的 jdbc的jar包时加入参数可开启缓存在url中加参数:
    ?useServerPrepStmts=true&cachePrepStmts=true&rewriteBatchedStatements=true
         /**
          * @param args
          * @throws SQLException
          * @throws ClassNotFoundException
          */
         public static void main(String[] args) throws ClassNotFoundException,
                    SQLException {
               String sqlString = "insert into person values(?,?)";
               Connection conn = jdbcUtils. getConnection();
               PreparedStatement pst = conn.prepareStatement(sqlString);
                long l = System. currentTimeMillis();
                for ( int i = 0; i < 10000; i++) {
                    pst.setInt(1, i);
                    pst.setString(2, "name" + i);
                    pst.addBatch();
                     if (i % 1000 == 0) {
                         pst.executeBatch();
                         pst.clearBatch(); // 清空缓存
                    }
               }
               pst.executeBatch();
               pst.close();
               conn.close();
               System. out.println(System. currentTimeMillis() - l);
         }
  • 相关阅读:
    20165334 第十三周选做
    20165334 实验五 网络编程与安全
    ### 20165334 —— 第十二周MySort(选作)
    2018-2019-1 20165227 20165228 20165237 实验一 开发环境的熟悉
    2018-2019-1 20165228 《信息安全系统设计基础》第四周学习总结
    2018-2019-1 20165228《信息安全系统设计基础》第三周课上测试
    2018-2019-1 20165228 《信息安全系统设计基础》第三周学习总结
    2018-2019-1 20165228 《信息安全系统设计基础》缓冲区溢出漏洞实验报告
    2018-2019-1 20165228 《信息安全系统设计基础》第二周学习总结
    2018-2019-1 20165228 苏祚堃《信息安全系统设计基础》第一周学习总结
  • 原文地址:https://www.cnblogs.com/haofaner/p/5652750.html
Copyright © 2011-2022 走看看