数据库JDBC request select操作参数化及结果保存
1、通过用户自定义变量或parameter values方法设置参数化
1、1添加数据库连接配置
1、2 添加jdbc请求
,注意事项:
1、parameter values 对应sql语句里面的问号(?),有几个问号,就要传递几个参数,但是参数要用逗号隔开
2、parameter type 参数类型,建议参考数据库表的字段设置,也要跟参数个数匹配,用逗号隔开。具体用什么类型,可以参考这个链接
https://docs.oracle.com/javase/8/docs/api/java/sql/Types.html
当然也可以直接与 开发沟通属于什么参数类型
2、将在数据库中查询到的结果保存起来
注意事项:
1、Variable names 存储的是查询的字段,一般有几个字段,就用几个变量来进行接收,不同的变量之间用逗号隔开
可以添加debug sampler 来查看结果是否获取到了
3、保留查询到的结果集
举例:查询有多条数据,不用变量的方式,用结果集的形式进行数据存储
,注意事项:
3、1 result Variable name 存储的是查询的结果集合,所有符合条件的都会被保存起来;
3.2可以添加debug sampler来看看参数是否获取到了
4、从结果集取值作为变量
给这个参数设置值,它会创建一个对象变量,保存所有返回的结果,获取具体值的方法:
,columnValue = vars.getObject("resultObject").get(0).get("Column Name")
resultObject为结果集的变量名
0为结果集的索引,从0开始
Column Name为对应的字段名
比如要获取到数据库表中一个字段name,用结果集形式进行存储
操作步骤:
1、添加JDBC连接
2、添加jdcb请求
3、添加beanshell,获取结果中name列对应的值
4、为了方便排错,可以加入Debug Sampler。点击运行并查看结果树,实际返回值为:
踩坑日记:
报:Response message: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval Sourced file: inline evaluation of: ``columnValue = vars.getObject(“resultObject1”).get(0).get(“name”); vars.put("name . . . ‘’
在网上巴拉半天原来是 ,BeanShell Sampler 放在了jdbc 请求前面
解决方法:beanshell放在jdbc后面,正确如下