哈希图结果仅显示一行

时间:2019-04-23 06:02:50

标签: java jsp hashmap

我使用hashmap并将其存储在jsp页面中,但是我在jsp页面中仅获得一行数据

 System.out.println("connection established successfully...!!");   
 ResultSet rs=st.executeQuery("Select SEC_NO,FACT_NO from sec where FACT_NO='B07C'");

if (!rs.next() ) {
      request.setAttribute("stts", "0");

}
else {

    HashMap<String, String> arrList = new HashMap<String, String>();
    do
    {
        String SEC_NO = rs.getString("SEC_NO");
        String FACT_NO = rs.getString("FACT_NO");
        arrList.put("sec_no", SEC_NO);
        arrList.put("fact_no", FACT_NO);
        System.out.println("Hasil : " + arrList); 

    }while(rs.next());

        request.setAttribute("datas", arrList);

        request.setAttribute("stts", "1");
    } 


    }
    catch (Exception e){
    System.out.println(e);
    }
helper = new ControllerHelper(request, response);
helper.doGet("grafik/grafik.jsp");

可能是什么问题?

2 个答案:

答案 0 :(得分:0)

就像 Jason 说的那样,您可以通过以下键在Hashmap中添加值 每次迭代“ sec_no” “ fact_no”

如我所见,您有3个变体。 1-使用不同的键(如

)添加 SEC_NO FACT_NO
HashMap<String, String> arrList = new HashMap<String, String>();
int i=0;
int j=0;
do
{
    String SEC_NO = rs.getString("SEC_NO");
    String FACT_NO = rs.getString("FACT_NO");
    arrList.put(i, SEC_NO);
    arrList.put(j, FACT_NO);
    System.out.println("Hasil : " + arrList); 
    j=i+1;
    i=i+2;
}while(rs.next());

2-使用MultiValueMap,您可以在1个键上添加多值。

3-例如,将每次迭代的值添加到List中,并且在所有迭代之后,您将能够进行

HashMap<String, List> arrList = new HashMap<String, List>();
arrList.put("sec_no", list1);
arrList.put("fact_no", list2);

其中list1和list2已经具有值

答案 1 :(得分:0)

您正在通过循环覆盖HashMap键:

HashMap<String, String> arrList = new HashMap<String, String>();
                do
                {
                    String SEC_NO = rs.getString("SEC_NO");
                    String FACT_NO = rs.getString("FACT_NO");
                    arrList.put("sec_no", SEC_NO); //Overwriting
                    arrList.put("fact_no", FACT_NO); //Overwriting
                    System.out.println("Hasil : " + arrList); 
                }while(rs.next());

因为您一直HashMap中只有两个键。

最好为您的HashMap设置唯一的键值,如下所示:

HashMap<Integer, String> arrList = new HashMap<Integer, String>();
                    int i=0;
                    int j=1;
                    do
                    {
                        String SEC_NO = rs.getString("SEC_NO");
                        String FACT_NO = rs.getString("FACT_NO");
                        arrList.put(i, SEC_NO); 
                        arrList.put(j, FACT_NO); 
                        System.out.println("Hasil : " + arrList); 
                        i++;j=i+1;
                    }while(rs.next());

或者(我不确定您要使用哪种方法)可以使用STRING,STRING HashMap

HashMap<String, String> arrList = new HashMap<String, String>();
int i=0;
                    do
                    {
                        String SEC_NO = rs.getString("SEC_NO");
                        String FACT_NO = rs.getString("FACT_NO");
                        arrList.put("sec_no_"+i, SEC_NO); 
                        arrList.put("fact_no_"+i, FACT_NO); 
                        System.out.println("Hasil : " + arrList); 
                    }while(rs.next());

或二手MultiValueMap