package d706;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
/*
* 使用JMeter测试mysql数据库性能,插入数据的程序。
* 本程序将在可装入表中插入 10,000条记录。然后编译并执行这段代码,
* 用测试数据填充可装入数据表。
*
* 建表语句:create table TEST_DB(id int auto_increment primary key, name varchar(20), sex char(1) );
*
* 表TEST_DB 增加列test: alter table TEST_DB add(sex char(10));
* 表TEST_DB 修改列test: alter table TEST_DB modify sex char(20) not null;
* 表TEST_DB 删除列test: alter table TEST_DB drop column sex;
*
*/
public class Test_DB_Insert {
public static void main(String[] args){
int numOfTestRecords; // 插入数据量;
Connection con = null; // 连接数据库;
PreparedStatement statement = null; // 获取数据库操作对象;
try {
//注册驱动;
Class.forName("com.mysql.jdbc.Driver");
//连接数据库的信息;
String dbName = "test";
String url = "jdbc:mysql://127.0.0.1:3306/" + dbName;
String userName = "root";
String pwd = "root";
//获取数据库连接;
con = DriverManager.getConnection(url,userName, pwd);
con.setAutoCommit(false); //关闭事务自动提交
//记录执行时间
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss:SS");
TimeZone t = sdf.getTimeZone();
t.setRawOffset(0);
sdf.setTimeZone(t);
Long startTime = System.currentTimeMillis();
//创建数据库操作对象;
statement = con.prepareStatement("INSERT INTO TEST_DB(name,sex) VALUES(?,?)");
numOfTestRecords = 100; //插入的测试数据量;
for(int i = 0; i<numOfTestRecords; i++) { //循环
statement.setString(1,"DBTest-" + i);
statement.setString(2,"" + i%2); //0表示男;1表示女.
statement.addBatch(); // 把一个SQL命令加入命令列表
//statement.executeUpdate(); //执行SQL;
}
statement.executeBatch(); //执行批量更新
con.commit();//语句执行完毕,提交事务
int[] ref = statement.executeBatch();
//if(ref[numOfTestRecords-1] == 0){System.out.println("插入数据操作完成.");} //
System.out.println("插入数据操作完成.");
Long endTime = System.currentTimeMillis();
System.out.println("用时:" + sdf.format(new Date(endTime - startTime))); //
}catch(Exception e) {
System.out.println("An error has occurred: " + e.toString());
e.printStackTrace();
}finally{
if(statement != null){ //关闭数据库操作对象
try{
statement.close();
}catch(SQLException se){
se.printStackTrace();
}
}
if(con != null){ //关闭数据库连接
try{
if(con.isClosed()){con.close();} //
}catch(SQLException se){
se.printStackTrace();
}
}
}
}
}