一、Jmeter连接数据库,首先需要下载数据库连接驱动。我用的数据库是MySQL,如果有用其他数据库的,需要下载对应驱动。驱动的版本不低于数据库的版本,否则可能连接报错。
MySQL数据驱动mysql jdbc驱动包下载地址https://dev.mysql.com/downloads/connector/j/
下载完成后,将jar包放到jmeter目录中D:\JMeter\apache-jmeter-5.1.1\lib\ext下,然后重启jmeter
二、连接数据库,添加JDBC Connection Configuration
配置数据库信息
1)Variable Name不能为空,后面在数据库请求时需要用到,用来标识改请求请求哪个库
2)DataBase URL 格式为:jdbc:mysql://服务器ip:端口号/数据库
在数据库后加参数?allowMultiQueries=true,可同时执行多条mysql语句;否则报错
3)JDBC Driver Class:com.mysql.jdbc.Driver
4)输入数据库的用户名和密码
三、创建线程组,线程组下添加JDBC Request
添加变量和查询语句,变量名“test”必须和JDBC Connection Configuration中的变量名保持一致
四、添加循环控制器,因为通过我的sql查询出的结果A、B条数是一样的,所以循环次数取AB都行。我这里写的${B_#},写成${A_#}也是没有问题的。
五、循环控制器下,添加计数器
六、计数器下添加一个简单的http请求,我这里就简单的那www.baidu.com来举例
值为什么是${__V(B_${count})}的一个写法,这里简单解释一下。这个是变量的嵌套
就是第一次我们通过sql查询,把满足结果的数据全部查询出来了。查询出来的结果其实就是A和B,${A_1}就代表查询出来的列A的第一条数据。${B_#}就是查询出来的B列的数据总数。而我们需要做的是通过一个循环控制器和计数器,来每读取到一个值,作为参数传递给发送的请求。那比如数据库中我有10条数据,${A_1}代表第一个结果,${A_2}代表第二个,${A_10}代表第十个。但是通过计数器来递增,1开始${B_#}(就是总数)结束逐一递增,这里的引用名为count,计数器计数到5,count就是5。所以我在请求的时候就需要写成${B_${count}},但是没有这种写法,所以就需要拼接。
嵌套拼接常用方法:
方法一:${__V{变量a_${变量b}}}
方法二:${__BeanShell(vars.get("变量a_${变量b}"))}
:函数${__V}用于执行嵌套函数引用
七、最后我们看一下结果