asysbang

 找回密码
 立即注册
查看: 2281|回复: 0
打印 上一主题 下一主题

随机写入数据库数据

[复制链接]

513

主题

2

好友

6404

积分

管理员

Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

最佳新人 活跃会员 热心会员 推广达人 宣传达人 灌水之王 突出贡献 优秀版主 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2020-8-21 10:31:19 |只看该作者 |倒序浏览
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();
                }
        }

}


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|aSys-帮 ( 京ICP备13033689号 )

GMT+8, 2024-10-5 23:26 , Processed in 0.045049 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部