学习使用Jmeter做压力测试(一)

发表于:2013-7-16 11:10

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:软件测试员    来源:51Testing软件测试网采编

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();
         }
        }
       }      
      
 }
}

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号