jmeterJDBC请求
注:关注一下jmeter大版本间的优化点
一、基础jdbc请求的用法
1、各变量介绍

Variable Name: 数据库连接池名称,随便写
MaxNumber of Connection: 数据库最大链接数
MAX Wait(ms):最大等待时间
Time Between Eviction Runs(ms): 数据库空闲清理的间隔时间,单位ms;
连接池被连接,但一直不干活,超过这个配置时间,就会断开
Auto Commit:自动提交。有三个选项,true、false、编辑(自己通过jmeter提供的函数设置)
Transaction Isolation: 默认DEFAULT
Test While Idle:是否开启验证,有三个选项,true、false、编辑
Soft Min Evictable Idel Time(ms):
Validation Query:验证查询,向数据库发送一条select 语句,看是否能够成功返回
Database URL:
基本配置:jdbc:mysql://localhost:3306/test (jdbc:公司://ip:端口/db)
支持中文且允许多条的配置:jdbc:mysql://localhost:3306/test?useUnicode=ture&characterEncoding=utf8&allowMultiQueries=true
JDBCDriver Class: driver:com.mysql.jdbc.Driver
2、加驱动包,驱动包的版本不同,jdbc配置中的JDBCDriver Class名称也有可能不同,要注意;

jdbc驱动jar包: 百度下载
3、发起jdbc请求;

Variable Name of Pool :名字必须与jdbc配置中的Variable Name一致;
SQL Query:Query Type:
Select Statment:查询
Update Statment:除了查询以外的都是update
Callable Statment:调存储过程的
Prepared Select Statment:预编译 查询
Prepared Update Statment:预编译 更改
mysql默认是开启自动提交的,Oracle不是
4、查看jdbc请求结果;如果jdbc请求成功;

二、jdbc请求中预编译sql的处理方法
详细解释下预编译:
select * from table t where t.id=1;
select * from table t where t.id=?;先给出sql但不传值,用到的时候再传值,?是占位符;
预编译的好处:安全,防止sql注入
例如:登录
没有预编译的时候:
select * from emp where username='123' and pass='456' 可以登录成功
select * from emp where username='123' and pass='xxx' or '1=1' 也登录成功
有预编译的时候:
select * from emp where username='123' and pass='or '1=1'' 无法登录
脚本中需要的参数先用占位符英文的 ‘?’占位,再通过传值的方式给占位符赋值,这就是预编译sql;

三、jdbc请求中变量名称(variable name)用法:
如果后面的请求要用到数据库返回的值,就可以通过传递jdbc请求中的变量来处理
1、给出变量名称,随便写,通过调试后置处理程序来看输出的变量;


2、后续请求要用到前面返回的值,直接在请求的参数位置给出前面返回的值;

3、通过查看结果树,看到参数正确传递;

四、jdbc请求中变量名称(variable name)+循环控制器绝配用法
如果后面的请求要用到数据库返回的一列值,就可以通过传递jdbc请求中的变量+foreach循环控制器来处理
1、保证通过jdbc请求已经返回了想要的数据;

2、添加foreach循环控制器,具体配置如下;

3、新的请求中变量名称是循环控制器中输出的 变量名称;

4、通过查看结果树看到,返回的两个值分别作为参数传给了新的请求;


五、jdbc请求中结果变量名称(Result variable name)的用法




浙公网安备 33010602011771号