Java,从 Derby 数据库获取数据并将每一行转换为一个 Json 对象

Java, getting data from a Derby database and converting each row into a Json object

我正在研究 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"}

这是数据库的最后一行。我的问题是为什么它只给我最后一行?我怎样才能让它给我所有的行? 有什么想法吗?

如果您将一个对象放入具有相同键的 JSON 对象,那么之前具有该键的值将被覆盖,而不是添加(因为 JSON 对象不能有多个具有相同键的键姓名)。

要使其正常工作,请创建一个列表,然后将该列表添加到您的 JSONObject