jmeter如何连接Oracle数据库,并作为变量传输,不好用算我的!!

本文详细介绍如何在JMeter中连接Oracle数据库并实现数据参数化,包括下载驱动、配置连接和使用JDBC请求获取数据库数据的过程,适用于性能测试场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jmeter如何连接Oracle数据库,并作为变量传输,不好用算我的!!

我们在写jmeter脚本时,会遇到这样一个问题,参数化的数据要放到一个参数文件中,但是我们业务库里的数据是经常会有变化的,所以每次用到脚本的时候总是要重新连上数据库再执行一遍查询语句。然后再将新数据更新到参数文件中,有点麻烦,懒人创造世界,所以更高级的做法就是直接连接数据库,不动一兵一卒。

第一步:准备好Oracle数据库驱动,没有驱动的,贴心的附上链接啦:链接:https://pan.baidu.com/s/16kTio2YQh2_K3cdjZOPWjQ 
提取码:z9lt

第二步:将下载好的驱动放在一个路径下(我是放在jmeter安装目录的lib路径下了,其实路径无所谓,我习惯性把扩展文件放在lib下)

第三步:打开jmeter,在测试计划下选择Oracle数据库驱动的放置路径,如图所示

第四步:在线程组下,添加一个jdbc connection configuration,下面database connection configuration里是必须要填写的内容,

其中database url 是指数据库的连接地址:jdbc:oracle:thin:@ip:端口号/实例

jdbc.driver.class 是要连接的数据库类型,不同的数据库连接方式不同,这是一个下拉选框,常用的就是MySQL和Oracle的连接方式,这里我连接的是Oracle

username和password 就是数据库的用户名和密码了

如下图所示:

第五步:在线程组下,创建一个jdbc request :

SQL Query:注意填写的sql语句未尾不要加“;”

Variable names:保存sql语句返回结果的变量名

Result variable name:创建一个对象变量,保存所有返回的结果 

Query timeout:查询超时时间 

Handle result set:定义如何处理由query type :select statement语句返回的结果

variables names设置为A,,C,那么如下变量会被设置为:

  A_# (总行数)
  A_1=第1列, 第1行
  A_2=第1列, 第2行 
  C_# (总行数) 
  C_1=第3列, 第1行
  C_2=第3列, 第2行

  • 如果返回结果为0,那么A_#和C_#会被设置为0,其它变量不会设置值。
  • 如果第一次返回6行数据,第二次只返回3行数据,那么第一次那多的3行数据变量会被清除。
  • 可以使用${A_#}、${A_1}...来获取相应的值

第七步:就是在你引用的地方通过${A_#}、${A_1}...来获取相应的值.

这里我定义的是taskid,我要引用返回值的第一列第一行的值我就可以在第六步的时候通过${taskid_1},来引用。

好像,又遇到一个问题,如果我想引用返回的所有值,该怎么办?压测不可能只引用一个值的,但以上引用的方法中,没有一个是可以引用所有值并且依次读取的。思索良久后,想出以下方法:

第八步:添加循环控制器

循环控制器:如图所示:${taskid_#}代表取到的总行数,例如总共有2条数据,这里循环次数就是2

第九步:添加计数器:如图所示,starting value=1 开始值是从1开始

                                 递增 =1 表示依次加1

                                 maximum value =${taskid_#} 表示最大值为2(因为上面说到了返回值总行数是2)

                                 引用名称  num  表示在其它地方可以通过${num}的方式引用

第十步:通过函数助手来执行嵌套函数引用:__V 嵌套函数引用

__V可以用于执行变量名表达式,并返回执行结果。

例如 ${taskid_1} 执行正常,但是我想把1用变量${num}来替换。 ${taskid_${num}}这个就没办法在jmeter中执行了

但是使用__V函数后,以上的嵌套函数就可以正常使用了,具体如下:

生成后的这个${__V(taskid_${num},)}就可以直接引用在自己的传参里了

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值