asysbang

标题: 随机写入数据库数据 [打印本页]

作者: admin    时间: 2020-8-21 10:31
标题: 随机写入数据库数据
package tel;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Random;

public class MySqlHelper {
        private static final String DBDRIVER = "com.mysql.cj.jdbc.Driver"; // 驱动程序名
        private static final String DBURL = "jdbc:mysql://localhost:3306/tel?useUnicode=true&characterEncoding=utf-8&useServerPrepStmts=false&rewriteBatchedStatements=true"; // URL指向要访问的数据库名mydata
        private static final String DBUSER = "root"; // MySQL配置时的用户名
        private static final String DBPASSWORD = "root";

        private static MySqlHelper sInst;

        public static MySqlHelper getInstance() {
                if (sInst == null) {
                        sInst = new MySqlHelper();
                }
                return sInst;
        }

        private Connection mConnection = null;

        public void connect() {
                try {
                        Class.forName(DBDRIVER); // 注册驱动
                        mConnection = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD); // 获得连接对象
                } catch (ClassNotFoundException e) { // 捕获驱动类无法找到异常
                        e.printStackTrace();
                } catch (SQLException e) { // 捕获SQL异常
                        e.printStackTrace();
                }
        }

        // 15901046093
        // 10000000000
        public String randomNum() {
                Random random = new Random();
                int num = random.nextInt(1000000000 - 2);
                int f = random.nextInt(9);
                String str = String.format("1%d%09d", f, num);
                return str;
        }

        private static String[] a1 = { "北京市", "辽宁省", "黑龙江", "吉林省", "上海市", "天津市", "湖南省", "河北省", "湖北省", "河南省", "安徽省", "广东省",
                        "广西省", "西藏", "新疆", "福建省" };
        private static String[] a2 = { "海淀区", "朝阳区", "东城区", "西城区", "房山区", "通州区", "大兴区", "怀柔区", "密云区", "昌平区", "古塔区", "凌河区省",
                        "太和区", "浦东新区", "厦门市", "锦州市", "武汉市", "洛阳市", "重庆市", "成都市", "长春市", "哈尔滨市" };

        public String randomArea() {
                Random random = new Random();
                int f = random.nextInt(a1.length);
                int f1 = random.nextInt(99);
                int g = random.nextInt(a2.length);
                int g1 = random.nextInt(99);
                return a1[f] + f1 + "_" + a2[g] + g1;
        }
       
        public void batchInsertData(int dataSize) {

                try {
                        mConnection.setAutoCommit(false);
                        long time = System.currentTimeMillis();
                        String sql = "INSERT INTO Info1(num,addr) values(?,?)";// 要执行的SQL语句
                        PreparedStatement prepareStatement = mConnection.prepareStatement(sql);
                        for (int i = 0; i < dataSize; i++) {
                                String num = randomNum();
                                String area = randomArea();
                                prepareStatement.setString(1, num);
                                prepareStatement.setString(2, area);
                                prepareStatement.addBatch();
                        }
                        prepareStatement.executeBatch();
                        mConnection.commit();
                        prepareStatement.close();
                        System.out.println("time : " + (System.currentTimeMillis() - time));
                } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
        }

        public void insertData(int dataSize) {
                long time = System.currentTimeMillis();
                try {
                        Statement statement = mConnection.createStatement();
                        for (int i = 0; i < dataSize; i++) {
                                String num = randomNum();
                                String area = randomArea();
                                String sql = "INSERT INTO Info1(num,addr) values('%s','%s')";// 要执行的SQL语句
                                statement.addBatch(String.format(sql, num, area));
                                if (i % 5000 == 0 && i > 0) {
                                        System.out.println("====5000");
                                }
                        }
                        statement.executeBatch();
                        System.out.println("time : " + (System.currentTimeMillis() - time));
                        statement.close();
                } catch (SQLException e) {
                        e.printStackTrace();
                }
        }

}







欢迎光临 asysbang (http://asysbang.com/) Powered by Discuz! X2.5