Hashmap результат показывает только одну строку - PullRequest
0 голосов
/ 23 апреля 2019

Я использую 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 голосов
/ 23 апреля 2019

Вы перезаписываете 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.

0 голосов
/ 23 апреля 2019

Как сказал Джейсон , вы добавляете свое значение в 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, где вы можете добавить свое многозначное значение на 1key.

3 - Добавьте свое значение из каждой итерации, например, в List, и после всех итераций вы сможете сделать

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

, где list1 и list2 уже имеют значения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...