【问题标题】:Java JTable Result From Database来自数据库的 Java JTable 结果
【发布时间】:2012-09-03 05:16:14
【问题描述】:

我的 JTable 有问题,我不知道如何将我的 String 类型的 fetch 记录从我的数据库存储到多维数组中,比如 Object[][] 数据。我想要做的是向 JTable 显示我的数据库记录,我已经在数据库中获取记录并将其存储在我的 String 变量中,问题是如何将获取记录存储到 Object 的多维数组并在我的JTable。

这是我获取记录的代码:

static class TableData{
    Object[][] data;
    int count = 0;
    Statement sql = null;
    String query, user = "JEROME", pass = "Perbert101", driver = "oracle.jdbc.OracleDriver", conString = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
    Connection con = null;
    ResultSet rs = null;
    TableData(){
        try{
            Class.forName(driver);
        }
        catch(ClassNotFoundException e){
            JOptionPane.showMessageDialog(null, "Problem Loading Driver");
        }
        try{
            con = DriverManager.getConnection(conString, user, pass);
            sql = con.createStatement();
            sql.executeQuery("SELECT * FROM INVENTORY");
            rs = sql.getResultSet();
            int key = 0;
            String val = null, val1 = null, val2 = null, val3 = null, val4 = null, val5 = null;
            System.out.println("Results: ");
            while(rs.next()){


                    key = rs.getInt(1);
                    if(rs.wasNull()){
                        key = -1;
                    }
                    val = rs.getString(2);
                    if(rs.wasNull()){
                        val = null;
                    }
                    val1 = rs.getString(3);
                    if(rs.wasNull()){
                        val = null;
                    }
                    val2 = rs.getString(4);
                    if(rs.wasNull()){
                        val = null;
                    }

                    val3 = rs.getString(5);
                    if(rs.wasNull()){
                        val = null;
                    }
                    val4 = rs.getString(6);
                    if(rs.wasNull()){
                        val = null;
                    }
                    val5 = rs.getString(7);
                    if(rs.wasNull()){
                        val = null;
                    }

                System.out.println("Key = " + key);
                System.out.println("value = " + val);
                System.out.println("value = " + val1);
                System.out.println("value = " + val2);
                System.out.println("value = " + val3);
                System.out.println("value = " + val4);
                System.out.println("value = " + val5);

            }


            sql.close();
            con.close();
        }
        catch(SQLException e){
            JOptionPane.showMessageDialog(null, "Error Loading Database Data");
        }

    }
}
//----------END------------
public static void main(String[] args){
    POSModel.TableData data = new POSModel.TableData();
}

【问题讨论】:

  • 你可能想接受一些答案...
  • 是的,我是 Java 新手,我花了大约 1 小时研究如何获取一些记录,你能帮我吗?我现在真的很需要这个。

标签: java database swing jdbc jtable


【解决方案1】:

我建议您从数据库中提取的数据首先需要存储在一个数组中(按列)...

Object[] rowData = new Object[7];
rowData[0] = key;
rowData[1] = val;
rowData[2] = val1;
rowData[3] = val2;
rowData[4] = val3;
rowData[5] = val4;
rowData[6] = val5;

这需要存储在某种行结构中,我个人会使用List。这种选择的主要原因是您可能事先不知道您将阅读的行数...

List<Object[]> rowList = new ArrayList<Object[]>(25);

// Process the resultset...
// Create the column array from above...

rowList.add(rowData);

完成所有行的读取后,您需要将列表转换为数组...

data = rowList.toArray(new Object[](rowList.size())); // I like to provide my own array

同样,你可以这样做......

data = new Object[rowList.size()][7];
rowList.toArray(data);

哪个更方便...

现在你应该有一个二维数组...

【讨论】:

  • 如何循环一个多维数组?这样我就不需要输入所有的提取记录了。
  • 谢谢!我先试试这个。
  • 好像不接受关键字'List'这真的是java关键字吗?还是使用前需要先创建的泛型类?
  • 不是关键字,是接口,来自java.util.List。其中java.util.ArrayList 是...的实现。
  • 好的理解它是来自util库的接口,你评论的'创建上面的列数组'是我放置代码的地方,也就是获取记录的地方,对吧?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-25
  • 1970-01-01
  • 2015-01-19
  • 1970-01-01
  • 2013-11-17
相关资源
最近更新 更多