zoukankan      html  css  js  c++  java
  • sql语句批量处理Batch

    package Statement批量处理;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.Statement;
    
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    
    
    public class StatementDemo {
    
        /**
    void    clearBatch() 
           清空此 Statement 对象的当前 SQL 命令列表。
    void    addBatch(String sql) 
              将给定的 SQL 命令添加到此 Statement 对象的当前命令列表中。
    int[]    executeBatch() 
              将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。
    int    getMaxRows() 
              获取由此 Statement 对象生成的 ResultSet 对象可以包含的最大行数
    void    setMaxRows(int max) 
              将此 Statement 对象生成的所有 ResultSet 对象可以包含的最大行数限制设置为给定数。
    
    
         */
        
        @Test
        public void batch() throws Exception{
            
            Statement st=con.createStatement();
            for(int i=11;i<20;i++){
                //String sql ="delete from stud where id="+i;
                String sql = "insert into stud values("+i+",'Jack')";
                //每一次执行exeucteUpdate方法 ,st对象直接就将这个sql
                //通过connection发送给了数据库
                //st.executeUpdate(sql);
                //仅仅是添加sql而不执行
                //st.executeUpdate(sql);
                //也执行了????
                st.addBatch(sql);
                
    
            }
            int[] eff=st.executeBatch();
            System.err.println("执行完成"+eff.length);
            st.close();
            
        }
        
        @Test
        public void batch2() throws Exception{
            Statement st = con.createStatement();
            for(int i=1;i<=5;i++){
                String sql = "insert into stud values("+i+",'Jack')";
                st.addBatch(sql);
            }
            //对于st这个对象的批量处理,可以处理不同的sql语句
            String sql = "update stud set name='Rose'";
            //再添加这个sql
            st.addBatch(sql);
            //在几行数组的大小即length是几
            int[] effects = st.executeBatch();//{1,1,1,1,1,5}=10
            //获取执行了多少个sql
            int sqlCount = effects.length;
            //获取一共影响多少行
            int sum= 0;
            for(int i:effects){
                sum+=i;
            }
            System.err.println("一共有SQL:"+sqlCount+",影响了表中行数:"+sum);
            st.close();
        }
    
        @Before
        // 执行Test前执行
        public void getCon() throws Exception {
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://127.0.0.1:3306/abc?useUnicode=true&characterEncoding=utf8";
            con = DriverManager.getConnection(url, "root", "1234");
            // con.close();
            // System.err.println(con);
    
        }
    
        @After
        // 执行Test后执行
        public void closeConn() throws Exception {
            if (con != null || !con.isClosed()) {
    
                con.close();
            }
    
        }
    
        private Connection con;
    }
  • 相关阅读:
    20162330 2016-2017-2《程序设计与数据结构》课程总结
    强化学习--Policy Gradient
    59. Spiral Matrix II
    54. Spiral Matrix(剑指offer 19)
    58. Length of Last Word
    c++ string split
    神经网络反向传播,通俗理解
    大话设计模式C++ 备忘录模式
    57. Insert Interval
    c++ sort
  • 原文地址:https://www.cnblogs.com/xiaweifeng/p/3683961.html
Copyright © 2011-2022 走看看