需要将结果集转换为某种数据结构

时间:2015-06-04 07:15:29

标签: java sql tree resultset

我有一个像这样的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中请求ColD中的值2中的所有项目,我应该得到[5,6,7,8](作为列表或数组)。

我想知道树实施是否是一种正确的方法。

最好的方法是什么?提前谢谢。

2 个答案:

答案 0 :(得分:0)

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]

答案 1 :(得分:0)

这只是一个简短的伎俩,我的HashMap的keyscolumn4,值为column1 column2 column 3(以空格分隔)。

每当用户询问特定列的列值时,我都会相应地匹配并将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);
}