0

他の製品コードと同じように、1 つの製品コードに対して以下のデータを含む結果セットがあります。今、私は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);
        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 に答える
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 に答える