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

问题描述 投票:0回答:1

我正在修改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"}

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

java json jdbc derby
1个回答
1
投票

如果使用相同的键将对象放入JSONObject,则使用该键的先前值将被覆盖,而不是添加(因为JSON对象不能具有多个具有相同名称的键)。

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

© www.soinside.com 2019 - 2024. All rights reserved.