我有一个产品代码的结果集与下面的数据相同,就像更多的产品代码一样。现在我想在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
答案 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++;
}