需要将结果集转换为某种数据结构
Need to convert a Result Set to some data structure
我有一个 java.sql.ResultSet 这样的:
=============================
| colA | ColB | ColC | ColD |
=============================
| 1 | 1 | 1 | 1 |
| 1 | 1 | 1 | 2 |
| 1 | 1 | 2 | 3 |
| 1 | 1 | 2 | 4 |
| 1 | 2 | 3 | 5 |
| 1 | 2 | 4 | 6 |
| 1 | 2 | 4 | 7 |
| 1 | 2 | 4 | 8 |
| 1 | 3 | 5 | 9 |
| 1 | 3 | 6 | 10 |
=============================
第一列始终只有一个值。最后一列将始终是唯一的。
我需要一个实现来检索 ColD 中与 ColB 或 ColC 或 ColA 中的特定项目相对应的所有项目。
例如,如果我为 ColB 中的值 2 请求 ColD 中的所有项目,我应该得到 [5,6,7,8](作为列表或数组)。
我想知道树实现是否是解决此问题的正确方法。
最好的实现方式是什么?提前致谢。
Select colD from tableName where colB='2';
上面的查询还不够吗?
更新
如果您需要在 java 中完成此操作,则:
ResultSet rs=getAllDataInResultSet();//this method will return from stored procedure
List<int> resultList=new ArrayList<>();
while(rs.next()){
int colB=rs.getInt(2);
if(colB==2){
resultList.add(rs.getInt(4));
}
}
logger.debug(resultList); //logging the final Result list
输出:
[5,6,7,8]
这只是一个小技巧,我将有一个 HashMap,其中 keys
作为 column4
,值作为 column1 column2 column 3
(由 space 分隔).
每当用户询问特定列的列值时,我都会相应地匹配并给他keys
。
HashMap hm = new HashMap();
String query = "select * from emp;";
ResultSet rs = stmt.executeQuery(query);
while(rs.next())
{
hm.put(rs.getString(4), rs.getString(1)+" "+rs.getString(2)+" "+rs.getString(3));
}
int fromCol = 2;
int colVal = 4;
List arr = new ArrayList();
Iterator it = hm.entrySet().iterator();
while (it.hasNext())
{
Map.Entry pair = (Map.Entry)it.next();
String key = pair.getKey().toString();
String value = pair.getValue().toString();
String []tokens = value.split(" ");
if(tokens[fromCol - 1] .equals( colVal+""))
arr.add(key);
}
我有一个 java.sql.ResultSet 这样的:
=============================
| colA | ColB | ColC | ColD |
=============================
| 1 | 1 | 1 | 1 |
| 1 | 1 | 1 | 2 |
| 1 | 1 | 2 | 3 |
| 1 | 1 | 2 | 4 |
| 1 | 2 | 3 | 5 |
| 1 | 2 | 4 | 6 |
| 1 | 2 | 4 | 7 |
| 1 | 2 | 4 | 8 |
| 1 | 3 | 5 | 9 |
| 1 | 3 | 6 | 10 |
=============================
第一列始终只有一个值。最后一列将始终是唯一的。
我需要一个实现来检索 ColD 中与 ColB 或 ColC 或 ColA 中的特定项目相对应的所有项目。
例如,如果我为 ColB 中的值 2 请求 ColD 中的所有项目,我应该得到 [5,6,7,8](作为列表或数组)。
我想知道树实现是否是解决此问题的正确方法。
最好的实现方式是什么?提前致谢。
Select colD from tableName where colB='2';
上面的查询还不够吗?
更新
如果您需要在 java 中完成此操作,则:
ResultSet rs=getAllDataInResultSet();//this method will return from stored procedure
List<int> resultList=new ArrayList<>();
while(rs.next()){
int colB=rs.getInt(2);
if(colB==2){
resultList.add(rs.getInt(4));
}
}
logger.debug(resultList); //logging the final Result list
输出:
[5,6,7,8]
这只是一个小技巧,我将有一个 HashMap,其中 keys
作为 column4
,值作为 column1 column2 column 3
(由 space 分隔).
每当用户询问特定列的列值时,我都会相应地匹配并给他keys
。
HashMap hm = new HashMap();
String query = "select * from emp;";
ResultSet rs = stmt.executeQuery(query);
while(rs.next())
{
hm.put(rs.getString(4), rs.getString(1)+" "+rs.getString(2)+" "+rs.getString(3));
}
int fromCol = 2;
int colVal = 4;
List arr = new ArrayList();
Iterator it = hm.entrySet().iterator();
while (it.hasNext())
{
Map.Entry pair = (Map.Entry)it.next();
String key = pair.getKey().toString();
String value = pair.getValue().toString();
String []tokens = value.split(" ");
if(tokens[fromCol - 1] .equals( colVal+""))
arr.add(key);
}