如何使用;结果变量名“;在Jmeter的JDBC请求对象中

如何使用;结果变量名“;在Jmeter的JDBC请求对象中,jdbc,jmeter,Jdbc,Jmeter,在JMeter中,我添加了oracle服务器的配置。然后,我添加了一个JDBC请求对象,并将ResultSet变量名设置为状态 测试执行良好,结果显示在treeview listener中 我想使用变量status并将其与字符串进行比较,但jmeter抛出了将arraylist转换为字符串的错误 如何检索此变量并与While Controller中的字符串进行比较?JMeter中随JDBC请求返回的ResultSet变量位于数组的for中。因此,如果要使用变量status,则必须将其与索引一起使

在JMeter中,我添加了oracle服务器的配置。然后,我添加了一个JDBC请求对象,并将ResultSet变量名设置为
状态

测试执行良好,结果显示在treeview listener中

我想使用变量
status
并将其与字符串进行比较,但jmeter抛出了将arraylist转换为字符串的错误


如何检索此变量并与While Controller中的字符串进行比较?

JMeter中随JDBC请求返回的ResultSet变量位于数组的for中。因此,如果要使用变量
status
,则必须将其与索引一起使用。如果要使用第一条(或唯一一条)记录用户
状态\u 1
。因此,您需要像使用
status{index}

一样使用它,只是花了一些时间来解决这个问题,并且认为接受的答案有点不正确,因为JDBC请求采样器有两种类型的结果变量

变量名
框中指定的变量映射到查询返回的各个列,您可以通过说
columnVariable{index}
来访问这些列

结果变量名称中指定的一个包含整个结果集,实际上这是一个映射到值的列表。在这种情况下,上述语法显然不起作用

 String host = vars.getObject("status").get(0).get("option_value");
 print(host);
 log.info("----- " + host);
表格完整信息请阅读此链接中的“黄色方框”:

其他示例:

您可以在
JSR233后处理器中使用Beanshell/Groovy(相同的代码工作)来处理来自JDBC请求的“结果变量名”,如下所示:

ArrayList results = vars.getObject("status");

for (HashMap row: results){
    Iterator it = row.entrySet().iterator();
    while (it.hasNext()){
        Map.Entry pair = (Map.Entry)it.next();
        log.info(pair.getKey() + "=" + pair.getValue());
    }
}

替换为使用您选择的分隔符添加到字符串,而不是输出到日志

我在while条件中使用了resultset变量${status.get(0).get(“status”)}==“READY”,它没有抛出错误,但是线程在应该停止执行的时候继续运行。我也不明白。您是说从Beanshell访问变量,比如:${status_1}??我试过了,但没用。你能详细说明你的答案吗?请查看文档:。开头有一个关于“下划线语法”如何工作的示例。这帮我弄明白了。这就像:resultset中的每个字段都会得到一个变量,您可以使用\语法选择行。嘿,各位,你们谈论的主题都是错误的:问题标题清楚地提到了“如何使用“Result variable Name”。并且只有一个“结果集”,请参见“结果变量名”。您所描述的是类似excel的对resultset表的寻址,以获取特定值:-/公认的答案是关于jMeter提供的类似excel的机制,用于寻址到resultset表中,以获取特定值。因此,脱离主题,这是另一种脱离主题的机制,而不是使用“只询问单个resultset对象”和“点”访问其子对象。