- 注册时间
- 2013-4-19
- 最后登录
- 2024-9-26
- 阅读权限
- 200
- 积分
- 6404
- 精华
- 0
- 帖子
- 640
|
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();
}
}
}
|
|