Java, получение данных из базы данных Derby и преобразование каждой строки в объект Json - PullRequest
0 голосов
/ 13 марта 2019

Я работаю с базой данных Java и Derby и написал код для получения всех строк из базы данных derby (интегрированной базы данных NetBeans) и создания из нее объекта JSON.

try {
      PreparedStatement statement = this.con.prepareStatement("SELECT * FROM PURCHASEORDERS");
      ResultSet result = statement.executeQuery();
      JSONObject objectJson = new JSONObject();
      while(result.next()){
      for (int x=1;x<(result.getMetaData().getColumnCount())+1;x++)
      {
          if(result.getMetaData().getColumnType(x)==java.sql.Types.INTEGER)
          {objectJson.put(result.getMetaData().getColumnName(x), result.getInt(x));}
          if(result.getMetaData().getColumnType(x)== java.sql.Types.VARCHAR)
          {objectJson.put(result.getMetaData().getColumnName(x), result.getString(x));}
          if(result.getMetaData().getColumnType(x)== java.sql.Types.BOOLEAN)
          {objectJson.put(result.getMetaData().getColumnName(x), result.getBoolean(x));}
      }
      }
      System.out.println(objectJson);

Вот чтовывод

{"STATUS":"ordered","DEPARTMENTCODE":"Enterfake","COMPLETEDSTATUS":true,"PURCHASEID":4,"DELIVERYATTENTION":"fake"}

, который является последней строкой базы данных.Мой вопрос: почему он дает мне только последний ряд?и как я могу сделать так, чтобы он дал мне все строки?Есть идеи?

1 Ответ

1 голос
/ 13 марта 2019

Если вы поместите объект в JSONObject с тем же ключом, то предыдущие значения с этим ключом будут перезаписаны, а не добавлены (поскольку объект JSON не может иметь несколько ключей с одним и тем же именем).

Чтобы это заработало, создайте список и затем добавьте этот список в ваш JSONObject

...