Java JTable 显示数据库记录

标签 java database swing jtable resultset

我在获取数据库记录时遇到问题,在 JTable 中显示数据库记录的最佳方法是什么,所以现在我使用结果集来获取记录并将其存储在 Object[][] 数组中,我想要这个变量让 Object[][] data 的值显示在 JTable 上,我不知道我这样做是否正确。如何根据数据库内的记录初始化 Object[][] 数据大小。谢谢

这是我的代码:

ResultSet rs = null;
Statement sql = null;
Object[][] data = new Object[100][100];

        String query = "SELECT * FROM INVENTORY";
        sql = con.createStatement();
        sql.executeQuery(query);
        rs = sql.getResultSet();

        while(rs.next()){
            for(int i = 0; i < data.length; i++){
                for(int j = 0; j < data[i].length; j++){
                    int valId = rs.getInt(1);
                    String valName = rs.getString(2);
                    String valCat = rs.getString(3);
                    String valDesc = rs.getString(4);
                    double  valPrice = rs.getDouble(5);
                    int valstock = rs.getInt(6);
                    int valSupply = rs.getInt(7);

                    System.out.println(valId);
                    System.out.println(valName);
                    System.out.println(valCat);
                    System.out.println(valDesc);
                    System.out.println(valPrice);
                    System.out.println(valstock);
                    System.out.println(valSupply);

正如您所看到的,我使用多个 for 循环来获取记录,使用多个 for 循环是否正确?或者有什么简单的方法以及如何根据数据库中的总记录初始化我的 Object[][] 数组?

最佳答案

你应该使用ArrayList

首先创建数据持有者:

ArrayList<Object[]> data = new ArrayList<Object[]>();

然后逐行迭代 resultSet,并在每次要保存该行时创建一个新的 Object[] 数组。表中的项目数应等于行中的列数:

while(rs.next()){
    Object[] row = new Object[]{rs.getInt(1), 
                    rs.getString(2), 
                    rs.getString(3), 
                    rs.getString(4),
                    rs.getDouble(5),
                    rs.getInt(6),
                    rs.getInt(7)};
    data.add(row);
}
Object[][] realData = data.toArray(new Object[data.size()][]);

如果您将 SQL 查询更改为不使用“*”而只列出字段,那就太好了。

关于Java JTable 显示数据库记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12257553/

相关文章:

java - GridLayout 中的文本字段宽度不会改变

java - 在JFrame中显示移动 block

java - 与函数同时运行的进度条(在另一个类中)

java - 在 Java 的另一个类中实例化/初始化的对象的引用变量

java - XML文件的Java通用解析

sql - 如何使 SSRS 参数 = 来自另一个数据集的字段

java - 使用 GridBagLayout 为 JFrame 自定义 FocusTraversalPolicy

java - 通过 JNDI 将 Tomcat 连接到独立的 Artemis Broker

sql-server - 关系数据库中的许多表到一行

database - 索引组织表和普通表重建索引有什么区别?