我正在开发一个多线程项目,我需要在其中随机找到columns
将在我的项目中使用的项目SELECT sql
,然后我将执行该 SELECT sql 查询。
找到那些列后-
- 我需要查看 id 是否在有效范围之间,如果它在有效范围之间,然后使用 columnsList 中的那些列循环结果集并将数据取回并存储在变量中。
- 否则,如果 id 不在有效范围内,我需要检查我没有从结果集中取回任何数据。但不知何故,如果我取回数据并且标志为真以停止程序,然后退出程序。否则,如果我要取回数据但标志为假以停止程序,则计算其中发生了多少。
下面是我的代码-
private volatile int count;
@Override
public void run() {
.....
final String columnsList = getColumns(table.getColumns());
....
rs = preparedStatement.executeQuery();
....
if (Read.endValidRange < id && id < Read.startValidRange) {
while (rs.next()) {
for(String column: columnsList.split(",")) {
System.out.println(column + ": " + rs.getString(column));
}
}
} else {
if(rs.next() && Read.flagTerminate) {
System.exit(1);
} else {
count++;
}
}
....
}
/**
* A simple method to get the column names in the order in which it was
* inserted
*
* @param columns
* @return
*/
private String getColumns(final List<String> columns) {
List<String> copy = new ArrayList<String>(columns);
Collections.shuffle(copy);
int rNumber = random.nextInt(columns.size());
List<String> subList = copy.subList(0, rNumber);
Collections.sort(subList, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return columns.indexOf(o1) < columns.indexOf(o2) ? -1 : 1;
}
});
return StringUtils.join(subList, ",");
}
问题陈述-
我无法理解我应该如何遍历结果集,因为每次我的 SELECT sql 中都会有不同的列,具体取决于生成的内容。除此之外,我怎样才能使它在 if else 循环中更干净。