ResultSet到HashMap

Bet*_*ish -2 java jdbc resultset hashmap

我试图将a的输出传递ResultSet给Java HashMap.

Map<Integer, String> sIDpNumberHashMap = new HashMap<Integer, String>();

while (DBresult.next()) {
    int sID = DBresult.getInt("slrid");         
    String pNumber = DBresult.getString("pNumber");
    sIDpNumberHashMap.put(sID , pNumber );
    System.out.println("Output1"+ sID + "\t" + pNumber + "\n");
}
System.out.println("Output2" + "\n" + sIDpNumberHashMap);
Run Code Online (Sandbox Code Playgroud)

而Output1显示所有记录(来自数据库).该put命令仅从ResultSet中获取最后一个值.

输出1:

 502332262  101E2571G103
 502332262  101E2571G103
 502332262  116E3139P001
 502332262  117E3640G025
 502332262  314B7159G003
 502332262  117E3640G025
Run Code Online (Sandbox Code Playgroud)

输出2:

{502332262=117E3640G025}
Run Code Online (Sandbox Code Playgroud)

如何使put命令迭代结果ResultSet

Era*_*ran 5

您的所有ID都相同(502332262),并且HashMap不允许重复的密钥.这就是你只看到一个条目HashMap(包含你输入的最后一个值Map)的原因.

如果要允许重复项,请考虑使用其他集合来保存数据.例如,您可以使用包含从DB读取的两个属性的ArrayList<SomeClass>where SomeClass.