ResultSet: значения не могут быть вставлены в HashMap - PullRequest
0 голосов
/ 18 мая 2018

У меня есть функция, которая отправляет запрос в мою базу данных и сохраняет результат в набор результатов.Другая функция должна принять значения набора результатов и поместить его в хэш-карту.если я отлаживаю свой код, функция, которая получает данные из базы данных, возвращает значения в наборе результатов, но если я передам этот набор результатов в качестве параметра функции hashmap, то это говорит о том, что набор результатов будет пустым.Я сижу на этой проблеме со вчерашнего дня и не могу найти никакого ответа.Может ли кто-нибудь найти ошибку в моем коде?

Это моя функция Hashmap и функция для создания набора результатов.

public HashMap<String, List<ResultSet>> toHashMap(ResultSet rset) throws SQLException, IOException {
        HashMap<String, List<ResultSet>> hmap = new HashMap<String, List<ResultSet>>();
        while (rset.next()) {
            String Processday = rset.getString("PROCESSDAY");
            if (hmap.containsKey(Processday)) {
                List<ResultSet> s = hmap.get(Processday);
                s.add(rset);
            } else {
                List<ResultSet> newList = new ArrayList();
                newList.add(rset);
                hmap.put(Processday, newList);
            }
            System.out.println(hmap.size());
            // convertToKML(distance, ax, ay, sx, sy, out);
        }
        return hmap;
    }

и это моя функция набора результатов.

public ResultSet getDBData(Connection conn, String[] args, RequiredMethods kml) throws SQLException{
        ResultSet rset;
        stmt = conn.createStatement();
        String sql_query;
        String[] userinput = kml.getUserInput(args);
        // String sql_query = "SELECT * from STOPPOINT_CORRECTED_BVAGG WHERE
        // trunc(PROCESSDAY) BETWEEN to_date('" + dateargs +"','ddmmyy') AND
        // to_date('" + toDate +"','ddmmyy') AND actualx is not null and
        // actualy is not null and distance is not null";


        if(userinput[0].isEmpty()){
            sql_query = "select distinct(trunc(PROCESSDAY)) PROCESSDAY,STOPPOINTID,ACTUALX,ACTUALY,SCHEDULEDX,SCHEDULEDY, DISTANCE from tabletest  WHERE trunc(PROCESSDAY) = to_date('" + kml.getDateAsString()
                + "','ddmmyy') AND actualx is not null and actualy is not null and distance is not null";
        }
        else if (userinput[1] == null) {
            sql_query = "select distinct(trunc(PROCESSDAY)) PROCESSDAY,STOPPOINTID,ACTUALX,ACTUALY,SCHEDULEDX,SCHEDULEDY, DISTANCE from tabletest  WHERE trunc(PROCESSDAY) = to_date('" + userinput[0]
                    + "','ddmmyy') AND actualx is not null and actualy is not null and distance is not null";
        }else{
            sql_query = "select distinct(trunc(PROCESSDAY)) PROCESSDAY,STOPPOINTID,ACTUALX,ACTUALY,SCHEDULEDX,SCHEDULEDY, DISTANCE from tabletest  WHERE trunc(PROCESSDAY) BETWEEN to_date('" + userinput[0]
                    + "','ddmmyy') AND to_date('" + userinput[1]
                    + "','ddmmyy') AND actualx is not null and actualy is not null and distance is not null";
        }
        System.out.println(sql_query);
        rset = stmt.executeQuery(sql_query);
        System.out.println("Query sent");



                    /*while(rset.next()){
                        System.out.println(rset.getString("ACTUALX"));  
                    }*/


        return rset;
    }
...