You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java数据库转JSON文件仅导出最后一行数据问题求助

解决导出数据库数据到JSON仅保留最后一行的问题

嘿,我看你遇到的问题是用Java导出数据库数据到JSON时,最终文件里只有最后一行数据,这问题我之前做项目的时候也踩过坑,咱们来一步步解决它~

问题根源

你的代码里把JSONObject jobj = new JSONObject();放在了while(rs.next())循环的外面,这就意味着每次循环你都是在同一个JSON对象里覆盖之前的数据,循环结束后自然就只剩最后一行的内容啦。而且要存储多行数据,咱们得用JSONArray来装多个JSONObject才行。

修改后的完整代码

public void getData() throws IOException {
    try {
        String query = "select * from Productos";
        rs = st.executeQuery(query);
        System.out.println("Prueba de funcionamiento");
        
        // 用JSONArray来存储所有产品的JSON对象
        JSONArray productArray = new JSONArray();
        
        while(rs.next()) {
            // ********关键:每次循环创建新的JSONObject,避免覆盖********
            JSONObject productObj = new JSONObject();
            
            // 读取数据库字段值(这里补全你实际需要的所有字段)
            String refPro = rs.getString("Cod.RefPro");
            String productName = rs.getString("Nombre");
            // 示例:如果有数字类型字段,比如价格
            // double price = rs.getDouble("Precio");
            
            // 将字段存入当前产品的JSON对象
            productObj.put("Cod.RefPro", refPro);
            productObj.put("Nombre", productName);
            // productObj.put("Precio", price);
            
            // 将当前产品对象加入数组
            productArray.put(productObj);
        }
        
        // 输出验证结果
        System.out.println("导出的JSON数据:");
        System.out.println(productArray.toString(4)); // 带缩进,更易读
        
        // 将JSON数据写入文件
        try (FileWriter writer = new FileWriter("productos_exportados.json")) {
            writer.write(productArray.toString(4));
            writer.flush();
            System.out.println("数据已成功导出到文件!");
        }
        
    } catch (SQLException e) {
        // 别忘了处理SQL异常,方便排查问题
        System.err.println("数据库查询出错:");
        e.printStackTrace();
    }
}

核心改进点

  • 循环内创建JSONObject:每次遍历数据库行时都新建一个JSON对象,这样每一行的数据都会被单独存储,不会被后续行覆盖
  • 用JSONArray管理多个对象:把每一行对应的JSONObject加入数组,最终就能得到包含所有数据的JSON数组
  • 健壮的异常处理:新增了SQL异常捕获,方便你排查数据库连接或查询的问题
  • 友好的文件写入:用try-with-resources语法自动关闭文件流,避免资源泄漏,同时生成带缩进的JSON,可读性更强

额外提示

  • 确保你使用的JSON库(比如org.json)已经正确引入项目依赖
  • 数据库字段名要和rs.getString()里的参数完全一致,大小写也要注意(取决于数据库配置)
  • 如果需要导出大量数据,建议分批处理或使用流式写入,避免内存占用过高

内容的提问来源于stack exchange,提问作者Gyswus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:47:13