0

我有以下数据的结果集,其中一个产品代码与更多产品代码相同。现在我只想在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 
4

3 回答 3

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++;
    }
于 2013-05-29T23:52:16.257 回答
0

那么是什么阻止您获取所需的列值并将它们合并到一个字符串中,如此处所述:

        ResultSet rs = stmt.executeQuery(query);
        while (rs.next()) {
            String itemCode = rs.getString("itemcode");
            String desc = rs.getString("Desc");
            System.out.println(itemCode + " " + desc);
          }
于 2013-05-29T23:14:49.183 回答
0

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

在这种情况下,最简单的做法是实例化一个 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]);
    }
}
于 2013-05-29T23:15:44.273 回答