如何从结果集中追加多个值?

时间:2013-05-29 23:06:20

标签: java

我有一个产品代码的结果集与下面的数据相同,就像更多的产品代码一样。现在我想在java中只将itemcode和desc作为字符串获取。如何获得这些价值?我知道如果要通过SQL,它非常简单。但我不想再次访问数据库。我想使用相同的结果集。请指教。

product   itemcode  Desc
6799        8205        OR
6799        8206        OR
6799        8208        OR
6799        8422        OR
6799        8424        OR
6799        1381        OR
6799        1485        OR
6799        1563        OR

预期产出:

 column1  column2  column3  
6799      item1   8205 OR 8206 OR 8208 OR8422 
6799      item2   8205 OR 8206 OR 8208 OR8422 
6799      item3   8205 OR 8206 OR 8208 OR8422 
6799      item4   8205 OR 8206 OR 8208 OR8422 
6799      item5   8205 OR 8206 OR 8208 OR8422 

3 个答案:

答案 0 :(得分:0)

那么是什么阻止你获取你想要的列值并让它们成为一个字符串,如下所述:

        ResultSet rs = stmt.executeQuery(query);
        while (rs.next()) {
            String itemCode = rs.getString("itemcode");
            String desc = rs.getString("Desc");
            System.out.println(itemCode + " " + desc);
          }

答案 1 :(得分:0)

您无法再次迭代ResultSet。如果您查看该类的documentation,您会注意到它有“仅向前移动的光标”。这意味着,如果您需要对数据点执行多项操作,则需要将结果集存储在另一个数据结构中(在内存中),这可能非常昂贵,或者您需要在迭代时执行多项操作它

在这种情况下最简单的方法是实例化一个StringBuilder并在你去的时候追加它:

StringBuilder sb = new Stringbuilder();
boolean first = true;

while (row) {
    // other code
    if (!first) {
      sb.append(" OR " + row[2]);
      first = false;
    } else {
      sb.append(row[2]);
    }
}

答案 2 :(得分:0)

试试这个:

    ResultSet rs = stmt.executeQuery(query);
    Map<String, String> resultMap = new HashMap<String, String>();
    while (rs.next()) {
        String product = rs.getString("product");
        String itemCode = rs.getString("itemcode");
        String desc = rs.getString("Desc");
        String mapValue = "";
        if (resultMap.containsKey(product)) {
            mapValue = resultMap.get(product) + " " + itemCode + " " + desc ;
        }
        resultMap.put(product, mapValue);
    }

    int itemCount = 1;
    for (Map.Entry<String, String> entry : resultMap.entrySet()) {
        System.out.println(entry.getKey() + "  item" + itemCount + " " + entry.getValue());
        itemCount++;
    }