我知道他们建议以这种方式获得单元格值:
columnValue = vars.getObject("resultObject").get(0).get("Column Name");
如jMeter doc : component reference : JDBC_Request所述。
但是:如何通过一些列来访问相同的RS单元格值?
RS.get(0).get(4);
...而不是给它一个列名称/标签的字符串。
编辑1 :让我们使用Groovy / Java,而不是BeanShell。感谢。
编辑2 :最初的动机是列名称/标签之间的区别,因为这些似乎没有得到充分保证(?这里似乎不清楚,不是我),特别是由于案例-sensitivity(“id”/“ID”,“name”/“Name”/“NAME”..)
答案 0 :(得分:1)
行本身是HashMap,在源代码中定义为:
HashMap<String, Object> row
因此,使用BeanShell语法,您可以将其作为
row = vars.getObject("resultObject").get(0); // returns HashMap
在HashMap中,您无法按ID访问项目(列)。但是,您可以应用其中一种方法here,但HashMap
不保证订单,因此您无法确定“第4列”将包含哪些内容。< / p>
如果您希望能够循环遍历所有列,最好以Map样式而不是索引来完成。例如,使用带有BeanShell的entrySet()
:
for(Map.Entry entry : row.entrySet())
{
log.info(entry.getKey() + "=" + entry.getValue());
}
查看迭代Map here的各种方法。
答案 1 :(得分:1)
应该是这样的:
String value = (new ArrayList<String>(vars.getObject("resultObject").get(0).values())).get(4)
更多信息:Debugging JDBC Sampler Results in JMeter
此课程不保证地图的顺序;特别是,它不保证订单会随着时间的推移保持不变。
因此列的顺序可能是一个很大的问号。