【发布时间】:2019-08-03 23:51:26
【问题描述】:
我正在修改 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,并将其添加到 List
。 docs.oracle.com/javase/tutorial/collections -
我不熟悉我尝试过的列表 List
list = new JSONObject();在循环结束时,我添加了这个位 list.add(objectJson);这就是我得到的 [{"purchaseid":1},{"departmentcode":"Enter"},{"status":"ordered"},............ 它创建了一个新对象为每个列元素创建一个列表。除了所有元素之外,还有什么其他方法可以像我在上面展示的那样吗?