Q:

Java JTable Displaying database records

I have problems fetching the database records, what is the best way to get the database records display in the JTable, so right now I used the resultset for fetching records and store it in the Object[][] array, I wanted this variable lets say Object[][] data its value to be displayed on JTable, I donn't know if I'm doing this right. And how can I initialize my Object[][] data size depending on the records inside my database. thanks
Here are my code:
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);

well as you can see I use multiple for loops for fetching the records, Is it right to use multiple for loops? or is there any easy way and how can I initialize my Object[][] array depending to the total records on my database?

A:

you should use an ArrayList
First you create the data holder:
ArrayList<Object[]> data = new ArrayList<Object[]>();

Then you iterate over the resultSet row by row and create a new Object[] array each time you want to save the row. The number of items in the table should be the number of columns in your row:
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()][]);

It would also be great if you changed the SQL query to not use the '*' and just list the fields.

