Получить в JSON все строки из запроса SQL в JAVA - PullRequest
0 голосов
/ 05 сентября 2018

Я получил следующий код. Я думаю, что мне просто нужно внести небольшие изменения, но я не знаю что. Код возвращает только последнюю строку, но я хочу видеть все строки в ответе. Если я объявляю LIMIT 10, я хочу получить 10 результатов в ответ.

Что я должен изменить?

Спасибо.

    @RequestMapping(value="/url/results/", method=RequestMethod.GET)
    public JsonResponse getResults() throws SQLException {

        Connection connection = ConnSingle.getInstance().getConnection(env);
        String selectSql = "SELECT * FROM Lib.Table WHERE YEARS=10 LIMIT 10";

        Statement statement = connection.createStatement();
        ResultSet rs = statement.executeQuery(selectSql);


        JSONArray json = new JSONArray();
        ResultSetMetaData rsmd = rs.getMetaData();
        JSONObject obj = new JSONObject();

        System.out.println(rsmd);

        while(rs.next()) {
            int numColumns = rsmd.getColumnCount();
            for (int i=1; i<=numColumns; i++) {
                String column_name = rsmd.getColumnName(i);
                obj.put(column_name, rs.getObject(column_name));
            }
        }

        rs.close();
        statement.close();
        connection.close();

        return new JsonResponse(obj);
    }

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

@ Джэйдип прав (он избил меня на несколько минут). Вот пример ... Вы помещаете все результаты в один и тот же объект obj. Чтобы отобразить все результаты, вы должны вставить «obj» в массив, например так:

JSONArray objects = new JSONArray();
while(rs.next()) {
            int numColumns = rsmd.getColumnCount();
            for (int i=1; i<=numColumns; i++) {
                String column_name = rsmd.getColumnName(i);
                obj.put(column_name, rs.getObject(column_name));
                objects.add(obj);
            }
        }
rs.close();
        statement.close();
        connection.close();

        return new JsonResponse(objects);
0 голосов
/ 05 сентября 2018

Вы перебираете набор результатов и добавляете каждую строку в JSONObject, но не добавляете JSONObject в JSONArray.

Просто добавьте JSONObject (obj) в JSONArray (json), и вы получите все строки / записи в ответе. :)

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