我正在修改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"}
这是数据库的最后一行。我的问题是为什么它只给我最后一排?我怎样才能让它给我所有的行?有任何想法吗?
如果使用相同的键将对象放入JSONObject,则使用该键的先前值将被覆盖,而不是添加(因为JSON对象不能具有多个具有相同名称的键)。
要使其工作,请创建一个列表,然后将该列表添加到JSONObject