首页 > 解决方案 > Java,从 Derby 数据库中获取数据并将每一行转换为 Json 对象

问题描述

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

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

标签: javajsonjdbcderby

解决方案


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

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


推荐阅读