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);
         }
  • 相关阅读:
    maven项目的导包问题,已经加载jar包了可是idea检测不到
    spark MLlib矩阵四则运算,线性代数
    maven spark Scala idea搭建maven项目的 pom.xml文件配置
    tensorflow2.0 numpy.ndarray 与tenor直接互转
    TensorFlow2.0矩阵与向量的加减乘
    Ubuntu14.04下Nginx反向代理Odoo域名
    Geforce experience报错:something went wrong try restarting geforce
    github的代码上传成功但是不显示绿格子(一直拖....心痛的教训.....)
    mapper文件提示:No data sources are configured to run this sql
    Pycharm中SQL语句提示SQL Dialect is Not Configured
  • 原文地址:https://www.cnblogs.com/haofaner/p/5652750.html
Copyright © 2011-2022 走看看