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

如何在JDBC三表联查结果中输出带列名的格式化数据?

修改JDBC查询结果为「列名: 值」格式的实现方案

嘿,这个需求其实很容易搞定,咱们只需要在打印的时候把列名和从ResultSet里取出的对应值拼接在一起就可以了。我已经帮你调整了代码,直接替换原来的while循环部分就行:

try {
    Connection conn = DriverManager.getConnection(DB_URL, USERNAME, PASSWORD);
    System.out.println("Connected");
    Statement st = conn.createStatement();
    String query = "SELECT s.*, sup.name as supplierName , p.name as partName "
            + "FROM supplies s "
            + "INNER JOIN supplier sup on s.supplierNum = sup.supplierNum "
            + "INNER JOIN parts p on s.partNum = p.partNum";
    ResultSet rs = st.executeQuery(query);
    while(rs.next()) {
        // 直接拼接列名和对应值,实现「列名: 值」的格式
        System.out.println("supplierNum: " + rs.getString("supplierNum"));
        System.out.println("partNum: " + rs.getString("partNum"));
        System.out.println("quantity: " + rs.getString("quantity"));
        System.out.println("supplierName: " + rs.getString("supplierName"));
        System.out.println("partName: " + rs.getString("partName"));
        space();
    }
} catch(Exception ex) {
    System.out.println(ex);
}

进阶优化:动态获取列名(适合列数多或不确定的场景)

如果以后你的查询列有变动,不想每次都手动修改打印语句,可以用ResultSetMetaData来动态获取所有列名和对应值,这样代码会更灵活,不用硬编码列名:

try {
    Connection conn = DriverManager.getConnection(DB_URL, USERNAME, PASSWORD);
    System.out.println("Connected");
    Statement st = conn.createStatement();
    String query = "SELECT s.*, sup.name as supplierName , p.name as partName "
            + "FROM supplies s "
            + "INNER JOIN supplier sup on s.supplierNum = sup.supplierNum "
            + "INNER JOIN parts p on s.partNum = p.partNum";
    ResultSet rs = st.executeQuery(query);
    ResultSetMetaData metaData = rs.getMetaData();
    int columnCount = metaData.getColumnCount();
    
    while(rs.next()) {
        // 遍历所有列,动态拼接列名和值
        for(int i = 1; i <= columnCount; i++) {
            String columnName = metaData.getColumnName(i);
            String value = rs.getString(i);
            System.out.println(columnName + ": " + value);
        }
        space();
    }
} catch(Exception ex) {
    System.out.println(ex);
}

这样不管你的查询语句里列怎么调整,代码都能自动适配输出「列名: 值」的格式啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:46:24