我正在开发一个多线程项目,其中每个线程都randomly find columns for that table
将使用这些列SELECT sql query
,然后我将执行该 SELECT sql 查询。执行该查询后,我将遍历结果集并将每列的数据添加到List<String>
.
这里columnsList
将包含columns
由comma
. 例如-
col1, col2, col3
下面是我的代码。
class ReadTask implements Runnable {
public ReadTask() {
}
@Override
public run() {
...
while ( < 60 minutes) {
.....
final int id = generateRandomId(random);
final String columnsList = getColumns(table.getColumns());
final String selectSql = "SELECT " + columnsList + " from " + table.getTableName() + " where id = ?";
resultSet = preparedStatement.executeQuery();
List<String> colData = new ArrayList<String>(columnsList.split(",").length);
boolean foundData = false;
if (id >= startValidRange && id <= endValidRange) {
if (resultSet.next()) {
foundData = true;
for (String column : columnsList.split(",")) {
colData.add(resultSet.getString(column.trim()));
}
resultSet.next();//do I need this here?
}
} else if (resultSet.next()) {
addException("Data Present for Non Valid ID's", Read.flagTerminate);
}
....
}
}
private static void addException(String cause, boolean flagTerminate) {
AtomicInteger count = exceptionMap.get(cause);
if (count == null) {
count = new AtomicInteger();
AtomicInteger curCount = exceptionMap.putIfAbsent(cause, count);
if (curCount != null) {
count = curCount;
}
}
count.incrementAndGet();
if(flagTerminate) {
System.exit(1);
}
}
}
问题陈述:-
执行SELECT
sql查询后。以下是我的两种情况-
- 我需要查看 id 是否在有效范围之间。如果它在有效范围之间,则检查是否
resultSet
有任何数据。resultSet
如果它有数据,则使用columns
from循环columnsList
并开始将其添加coldData
到字符串列表中。 - 否则,如果 id 不在有效范围内,那么我需要检查我没有从
resultSet
. 但不知何故,如果我取回数据并且标志为真以停止程序,然后退出程序。否则,如果我要取回数据但标志为假以停止程序,则计算其中发生了多少。所以为此,我创建了addException
方法。
谁能帮我看看我在这里为上述两个做的方式是否scenarios
正确?看起来,if/else loop
对于上述两种情况,我可以进一步改进代码。