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

在Java NetBeans中如何获取数据库所有列值并在另一个类展示

解决返回数据库所有查询结果的问题

你的问题出在单个字符串变量无法存储多条数据——每次while循环都会用新的sname覆盖之前的值,所以最后只能返回最后一条记录。要返回所有结果,你需要用集合来存储每一条查询到的数据,比如List<String>。

修改后的代码

import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;

public class Test {

    public static List<String> testMethod() {
        // 用List存储所有sname
        List<String> nameList = new ArrayList<>();
        database.createConnection();
        String query = "SELECT sname from allsale";
        
        // 用try-with-resources自动关闭Statement和ResultSet,避免资源泄漏
        try (Statement stmt = database.conn.createStatement();
             ResultSet rs = stmt.executeQuery(query)) {
            
            while (rs.next()) {
                // 把每条sname加入集合
                nameList.add(rs.getString(1));
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.toString());
            e.printStackTrace(); // 建议添加,方便调试异常详情
        } finally {
            // 记得关闭数据库连接,避免连接泄漏
            if (database.conn != null) {
                try {
                    database.conn.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        return nameList;
    }

    public static void main(String[] args) {
        List<String> names = testMethod();
        // 控制台打印所有结果,测试用
        for (String name : names) {
            System.out.println(name);
        }
    }
}

关键修改点

  • 将返回类型从String改为List<String>,用集合存储多条数据
  • 循环中调用nameList.add(rs.getString(1)),把每条查询到的sname加入集合
  • 使用try-with-resources语法自动关闭Statement和ResultSet,避免数据库资源泄漏
  • 添加finally块关闭数据库连接,不要让连接一直占用

在另一个类中展示数据的示例

比如创建一个DisplayClass,调用Test.testMethod()获取所有数据后展示:

import java.util.List;

public class DisplayClass {
    public static void showNames() {
        List<String> allNames = Test.testMethod();
        // 这里可以根据需求展示数据,比如GUI界面输出、写入文件等
        System.out.println("所有销售名称:");
        for (String name : allNames) {
            System.out.println("- " + name);
        }
    }

    public static void main(String[] args) {
        showNames();
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 23:40:30