• JDBC的批处理


    JDBC的批处理:

        1)批处理:一次性处理很多数据。
      解释:有时候需要向数据库发送一批sql语句执行,这时应避免向数据库一条条的发送执行,

       而应采用JDBC的批处理机制,以提升执行效率。
        2)两种方式:
          Statement :                  //Statement stat=conn.createStatement();创建语句
            stat.addBatch(sql):将sql填入缓冲区,进行编译。
            stat.executeBatch():将缓冲区中的数据一次性执行。
          PreparedStatement:    //PreparedStatement ps=conn.prepareStatement(sql);
            ps.addBatch():将参数放入占位符?存入缓存区。
            ps.executeBatch()::将缓存区中的数据一次性执行。
        3)案例:
          向表bank_money插入1070条数据。

    1)
    @Test
        public void testStatement() {
            Connection conn=null;
            try {
                conn= DBUtil2.getconn();
                Statement stat=conn.createStatement();
                long l1=System.currentTimeMillis();
                for(int i=10;i<1080;i++) {
                    String sql="insert into login_info          
                      values("+i+",'zs','111111')";
                     stat.addBatch(sql); 
                     //将sql填入缓冲区,进行编译。         
                      stat.executeQuery(sql);
                }
                stat.executeBatch();//:将缓冲区中的数据一次性执行。
                long l2=System.currentTimeMillis();
                System.out.println(l2-l1);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }       
    2)
    @Test
        public void testPreparedStatement() {
            Connection conn=null;
            try {
                conn=DBUtil2.getconn();
                String sql="insert into login_info values(?,?,?)";
                PreparedStatement ps=conn.prepareStatement(sql);
                long l1=System.currentTimeMillis();
                for(int i=10;i<1080;i++) {
                    ps.setInt(1, i);
                    ps.setString(2, "zs");
                    ps.setString(3, "111111");
                    ps.addBatch();// 将参数放入占位符?存入缓存区
                    if(i%100==0) {
                        ps.executeBatch();//每100次将 将缓存区中的数据一次性执行。,
                    }
                }
                ps.executeBatch();//将缓冲区数据一次性执行
                long l2=System.currentTimeMillis();
                System.out.println(l2-l1);
            } catch (Exception e) {
                e.printStackTrace();
            }finally {
                DBUtil2.colseconn(conn);
            }
        }  
    3public class DBUtil2 {
        private static String driver;
        private static String url;
        private static String user;
        private static String pwd;
        /**读取配置文件,只需要加载一次*/
        static {
            try {//从db文件读取出来内容
                /*文件字符流:默认当前文件路径在工程名下。         
                 * "db.properties"
                 * :通过当前类的类加载器所获取的流读取配置文件
                 */
                FileReader fr=new FileReader("db.properties");
                Properties prop=new Properties();
                prop.load(fr);
                driver=prop.getProperty("driver");
                url=prop.getProperty("url");
                user=prop.getProperty("user");
                pwd=prop.getProperty("pwd");
                Class.forName(driver);//1加载驱动
            } catch (Exception e) {
                e.printStackTrace();
                /*  "db.properties:
                              driver=oracle.jdbc.driver.OracleDriver
                 #driver=oracle.jdbc.OracleDriver
                 url=jdbc:oracle:thin:@localhost:1521:orcl
                 user=scott
                 pwd=1234
                 * 
                 */
            }
        }
        public static  Connection getconn() {//2.建立连接
            Connection conn=null;
            try {
                conn = DriverManager.getConnection( 
                        url, user, pwd);
                 
            } catch (Exception e) {
                e.printStackTrace();
            }
            return conn;
        }
        public static void colseconn(Connection conn) {
            try {
                if(conn!=null) {
                    conn.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        public static void main(String[] args) {
            System.out.println(getconn());//返回连接对象
        }
    }
        
  • 相关阅读:
    vue2.0 移动端,下拉刷新,上拉加载更多插件,修改版
    修改maven产生missing artifact错误
    程序的态度-一生想靠近的完美
    计算机中的存储
    Vue-router结合transition实现app前进后退动画切换效果
    js获取input上传图片装换为base64格式图片
    mongoose的基本操作
    vue路由跳转时判断用户是否登录功能
    Node.js学习笔记之文件上传
    推荐一个基于Vue2.0的的一款移动端开发的UI框架,特别好用。。。
  • 原文地址:https://www.cnblogs.com/xiaozelulu/p/8660272.html
Copyright © 2020-2023  润新知