zoukankan      html  css  js  c++  java
  • jdbc的批处理方法

    jdbc的批处理方法
    1、加载驱动    Class.forName("com.mysql.jdbc.Driver");
    2、创建连接    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/baybhhcsy""root""root");
    3、写sql语句 sql = "insert into  user(email,passwd) values(?,?)";
    4、创建prepareStatement对象预编译sql  ps = conn.prepareStatement(sql); 批处理的高效性
    5、循环创建sql语句
    for (User user : list) {
                    ps.setString(1, user.getEmail());
                    ps.setString(2, user.getPasswd());
                    ps.addBatch();
                }
    6、将ps加入到队列当中    ps.addBatch();
     
    7、执行sql语句    ps.executeBatch();  返回值是个int[]的数组
     
     
    package com.pk.jdbc0304.dao;

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.List;

    import com.pk.jdbc0304.po.User;

    /**
    * @author Administrator
     *    完成一次性往数据库中插入10 个用户
    */

    public class AddUsersDao {

        /*
         * 写一个方法  该方法插入一个用户  要想使用该方法插入10 个用户  调用该方法10次
         *     连接connection和Statement对象被创建和关闭各10次  sql语句被编译和执行各10次
         */


        public boolean regUser(User user){
            boolean flag = false;

            Connection conn = null;//连接对象

            Statement st = null;//查询窗口对象

            StringBuilder sql = new StringBuilder();
            sql.append("insert into user(email,passwd,nickname,sex) values('");
            sql.append(user.getEmail());
            sql.append("','");
            sql.append(user.getPasswd());
            sql.append("','");
            sql.append(user.getNickname());
            sql.append("',");
            sql.append(user.getSex());
            sql.append(")");
            System.out.println(sql.toString());

            try {
                Class.forName("com.mysql.jdbc.Driver");
                conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/puckasoft", "root", "1qaz2wsx");

                st = conn.createStatement();

                int i = st.executeUpdate(sql.toString());

                if(i != 0){
                    flag = true;
                }

            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                if(st != null){
                    try {
                        st.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
                if(conn != null){
                    try {
                        conn.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
            }
            return flag;
        }

        /*
         * 一次性插入10个用户  参数就带了10个用户的信息
         * Connection对象和Statement对象各被创建和关闭1次  sql语句被编译和执行各10次
         */

        public boolean addUsersByState(List<User> list){
            boolean flag = true;
            Connection conn = null;
            Statement st = null;

            try {
                Class.forName("com.mysql.jdbc.Driver");
                conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/puckasoft", "root", "1qaz2wsx");
                st = conn.createStatement();

                for (User user : list) {
                    StringBuilder sql = new StringBuilder();
                    sql.append("insert into user(email,passwd,nickname,sex) values('");
                    sql.append(user.getEmail());
                    sql.append("','");
                    sql.append(user.getPasswd());
                    sql.append("','");
                    sql.append(user.getNickname());
                    sql.append("',");
                    sql.append(user.getSex());
                    sql.append(")");
                    int i = st.executeUpdate(sql.toString());
                }
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
                flag = false;
            } catch (SQLException e) {
                e.printStackTrace();
                flag = false;
            } finally {
                if(st != null){
                    try {
                        st.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
                if(conn != null){
                    try {
                        conn.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
            }
            return flag;
        }

        /**
         * 一次性插入10个用户
         *     Connection和PreparedStatement对象被创建和关闭一次  但是sql语句被编译仅仅一次  执行10次
         */

        public boolean addUsersByPre(List<User> list){
            boolean flag = true;
            Connection conn = null;
            PreparedStatement ps = null;

            String sql = "insert into user(email,passwd,sex,nickname) values(?,?,?,?)";
            try {
                Class.forName("com.mysql.jdbc.Driver");
                conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/puckasoft", "root", "1qaz2wsx");

                ps = conn.prepareStatement(sql);//sql语句被编译一次

                for (User user : list) {
                    ps.setString(1, user.getEmail());
                    ps.setString(2, user.getPasswd());
                    ps.setInt(3, user.getSex());
                    ps.setString(4, user.getNickname());
                    int i = ps.executeUpdate();
                }
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
                flag = false;
            } catch (SQLException e) {
                e.printStackTrace();
                flag = false;
            } finally {
                if(ps != null){
                    try {
                        ps.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
                if(conn != null){
                    try {
                        conn.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
            }

            return flag;
        }

        /*
         * 批处理的写法  批处理一定是多次执行同一条sql语句
         */

        public boolean addUsersByStandard(List<User> list){
            boolean flag = true;
            Connection conn = null;
            PreparedStatement ps = null;
            String sql = "insert into user(email,passwd,sex,nickname) values(?,?,?,?)";

            try {
                Class.forName("com.mysql.jdbc.Driver");
                conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/puckasoft", "root", "1qaz2wsx");
                ps = conn.prepareStatement(sql);

                for (User user : list) {
                    ps.setString(1, user.getEmail());
                    ps.setString(2, user.getPasswd());
                    ps.setInt(3, user.getSex());
                    ps.setString(4, user.getNickname());
                    ps.addBatch();//将当前的命令加入到批处理的命令行中  并没有执行
                }
                ps.executeBatch();//执行批处理的命令
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                if(ps != null){
                    try {
                        ps.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
                if(conn != null){
                    try {
                        conn.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
            }
            return flag;
        }


        public static void main(String[] args) {
            List<User> list = new ArrayList<User>();
            for (int i = 0; i < 10 ; i++) {
                User user = new User();
                user.setEmail("meisuzhi" + i + "@126.com");
                user.setNickname("buyao" + i);
                user.setPasswd("654213");
                user.setSex(0);
                list.add(user);
            }
            AddUsersDao dao = new AddUsersDao();
    //        System.out.println(dao.addUsersByState(list));
            System.out.println(dao.addUsersByStandard(list));
        }
    }




  • 相关阅读:
    精彩回顾 | Serverless Developer Meetup 12.04 深圳站
    Dubbo3 Triple 协议简介与选型思考
    阿里云 FaaS 架构设计与创新实践
    KubeDL 0.4.0 Kubernetes AI 模型版本管理与追踪
    shell脚本awk的用法
    case用法ping命令脚本(工作中常用的)
    linux时间与internet时间同步
    bootStrap表单验证插件的使用
    状态模式之观察者模式
    20211125
  • 原文地址:https://www.cnblogs.com/babyhhcsy/p/2985765.html
Copyright © 2011-2022 走看看