【发布时间】:2013-02-27 19:48:28
【问题描述】:
我正在处理一个多线程项目,我需要在其中随机找到将在我的SELECT sql 中使用的columns,然后我将执行该 SELECT sql 查询。
找到那些列后-
- 我需要查看 id 是否在有效范围之间,如果它在有效范围之间,则使用 columnsList 中的那些列循环结果集并取回数据并存储在变量中。
- 否则,如果 id 不在有效范围内,我需要检查我没有从结果集中取回任何数据。但不知何故,如果我要取回数据并且标志为真以停止程序,然后退出程序。否则,如果我正在取回数据但标志为 false 以停止程序,那么请计算发生了多少次。
下面是我的代码-
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 循环中更干净。
【问题讨论】:
-
我正在做一个项目,我需要在其中随机查找需要在 SELECT sql 中使用的列,然后我将执行该查询。 - 什么?
-
Else if I am getting the data back but flag is false to stop the program, then count how many of those happening.你在说什么? -
else if I am getting the data back but flag is false to stop the program, then count how many of those has happened。通过这个,我想说只是计算那些潜在的情况。而当程序结束时,再从主线程打印出来。就是这样。 -
@Nevzz03:由于此代码在多个线程之间共享,因此需要适当同步以避免竞争条件......
标签: java sql database resultset