如何从JMeter中的JDBC Sampler获取对象结果集

dja*_*fan 3 jmeter jmeter-plugins

我在JMeter中从JDBC Sampler获取结果集对象时遇到问题.JMeter文档准确地说明了这一点:

Result Variable Name
If specified, this will create an Object variable containing a list of
    row maps. Each map contains the column name as the key and the column 
    data as the value. 
Usage:
  columnValue = vars.getObject("resultObject").get(0).get("Column Name");
Run Code Online (Sandbox Code Playgroud)

所以,我这样配置它,它的工作原理.但是由于上面的文档说我创建了一个"行映射列表",我想我会尝试在BeanShell中创建一个List对象,使其更具可读性.我试过这样做,但它没有用.有人知道答案吗?

List<Map<String,Integer>> results = vars.getObject("resultList");
Run Code Online (Sandbox Code Playgroud)

错误或多或少是这样的:

jmeter.util.BeanShellInterpreter: Error invoking bsh 
 method: eval   In file: inline evaluation of:
 ``List<Map<String,Integer>> results = vars.getObject("resultList")
Run Code Online (Sandbox Code Playgroud)

Dmi*_*i T 6

Beanshell不是Java,你需要以不同的方式访问它.

Beanshell不太支持那些"钻石"括号.请修改您的代码如下:

ArrayList result = vars.getObject("resultList");
for (HashMap table : result) {
    for (Object column : table.keySet()) {
        log.info(column + "=" + table.get(column));
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码假定您已resultList在JDBC Request Sampler中设置为"Result Variable Name".

那应该将查询结果打印到jmeter.log文件中.

有关Beanshell cookbook的更多详细信息和类型,请参见如何使用BeanShell指南.