我的要求是从数据库中删除数据,但是我需要传递给DELETE
查询的字符串是动态生成的,所以我必须首先收集数据,然后在for
循环中使用它,该循环将多次发送DELETE
查询。
My steps so far:
首先,我过滤了一个列表,以便将所需元素的列表收集到一个变量中。我得到了预期的输出:
List<String> newFilter = allProductNames.stream().filter(field -> field.startsWith("sample", 1)).collect(Collectors.toList());
System.out.println(newFilter)
输出:
"sample1", "sample2", "sample3", "sample4"
现在,我想使用每个元素向Neo4j数据库发送查询,使用查询-DROP DATABASE <database_name> wait;
,其中<database_name>
将被我收集的每个元素替换。所以查询看起来像这样:
DROP DATABASE sample1 wait;
DROP DATABASE sample2 wait;
DROP DATABASE sample3 wait;
DROP DATABASE sample4 wait;
DROP DATABASE sample5 wait;
我直接想到的是,for
循环可以帮助我通过在第一个查询中传递sample1
,在第二个查询中传递sample2
来重复发送查询…等等,但我的困境是我不知道如何实现这一点。
我试过这样做,但它不起作用:
List<String> newFilter = allProductNames.stream().filter(field -> field.startsWith("sample", 1)).collect(Collectors.toList());
int filterSize = newFilter.size();
int i = 0;
String dropDatabase = "DROP DATABASE " + i + " wait;"; //i want to pass the element as a variable here
for (; i < filterSize ; i++) {
basePage.queryInputField.sendKeys(dropDatabase);
}
我试图在循环中做的是在第一次运行中传递makei = sample1
,在第二次运行中传递i = sample2
,等等,但是i
是int
,我相信只有int
可以传递到一个条件中,就我的一点Java知识而言。
我如何在第一次运行中将String
sample1
传递到循环中以实现此DROP DATABASE sample1 wait;
,并在随后的运行中传递其他元素?我愿意接受任何能帮助我实现这一目标的方法。
它不工作,因为你没有更新dropDatabase字符串在循环中的任何时刻
你有两个选择,用a表示每个,或者用a表示i来更新字符串:
for (int i = 0; i < filterSize; i++) {
basePage.queryInputField.sendKeys("DROP DATABASE " + newFilter.get(i) + " wait;");
}
for (String database : newFilter) {
basePage.queryInputField.sendKeys("DROP DATABASE " + database + " wait;");
}
或者如果你想分开查询字符串,你也可以使用这样的格式:
String format = "DROP DATABASE %s wait;";
for (String database : newFilter) {
basePage.queryInputField.sendKeys(String.format(format, database));
}
试试这个:
for (String dbName : newFilter) {
String dropDatabase = "DROP DATABASE " + dbName + " wait;";
basePage.queryInputField.sendKeys(dropDatabase);
}