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);
         }
  • 相关阅读:
    c/c++字节序转换(转)
    O_DIRECT与O_SYNC区别(转)
    TCMalloc小记(转)
    内存优化总结:ptmalloc、tcmalloc和jemalloc(转)
    不依赖三方库从图像数据中获取宽高-gif、bmp、png、jepg
    Linux查看物理CPU个数、核数、逻辑CPU个数
    unix环境高级编程-3.10-文件共享(转)
    TF_Server gRPC failed, call return code:8:Received message larger than max (45129801 vs. 4194304)
    google doc上的云转换
    telnet 退出命令
  • 原文地址:https://www.cnblogs.com/haofaner/p/5652750.html
Copyright © 2011-2022 走看看