java - 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"}
这是数据库的最后一行。我的问题是为什么它只给我最后一行?我怎样才能让它给我所有的行?有任何想法吗?
解决方案
如果您将对象放入具有相同键的 JSONObject,则具有该键的先前值将被覆盖,而不是添加(因为 JSON 对象不能有多个具有相同名称的键)。
要使其正常工作,请创建一个列表,然后将该列表添加到您的 JSONObject
推荐阅读
- c - C 程序无法识别我的“max”输入
- c# - 将引导开关应用于复选框
- javascript - 如何在javascript中有效地从Array中选择两个随机索引而不会重复?
- python - 如何将此 Python 算法转换为 C#
- pdf - 如何绘制图像以匹配页面上特定文本的位置?
- python - 使用包命令时 sublime text 3 中出现意外的关键字
- javascript - 有没有办法在同一个wifi网络上连接的用户之间进行视频通话
- flutter - 漂浮在其容器外的图片颤动
- flutter - 构建apk时这些乱码是什么?
- java - 读取二进制文件中的约会对象在打印字符串中包含类名和大括号