我開始學習如何使用數據庫,並試圖將數據從我的h2數據庫導出到JTable中。表中出現了正確的行數,但是,只有第一行填充了數據。其餘的是一個空白的網格。我爲JTable發佈了一些代碼。如果有人需要查看更多代碼,我會發布它。爲什麼JTable只顯示第一行數據?
public class Table extends JTable{
public static int rows;
public static String[][] data;
public static String[] columns = {"Author", "Customer", "Date"};
public static void populateTable() throws ClassNotFoundException, SQLException{
//Server is name of the database class
Server server = new Server();
Statement stat = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stat.executeQuery("SELECT * FROM data");
rs.last();
rows = rs.getRow();
rs.beforeFirst();
data = new String[3][rows];
while(rs.next()){
int i = 0;
data[0][i] = rs.getString("Author");
data[1][i] = rs.getString("Customer");
data[2][i] = rs.getString("Date");
System.out.println(rs.getString("Author"));
i = i++;
}
rs.close();
}
}
class MyTableModel extends DefaultTableModel{
String[] columnNames = {"Author", "Customer", "Date"};
MyTableModel() throws ClassNotFoundException, SQLException{
addColumn(columnNames[0]);
addColumn(columnNames[1]);
addColumn(columnNames[2]);
}
@Override
public int getRowCount() {
return rows;
}
@Override
public int getColumnCount() {
return 3;
}
@Override
public String getColumnName(int columnIndex) {
return columnNames[columnIndex];
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return data[columnIndex][rowIndex];
}
我也可以打印到控制檯的所有數據,但它不會顯示在JTable中。我一直堅持這個問題好幾個小時,但我不知道我做錯了什麼。在此先感謝
這麼簡單的事情。 – mike413
另外你的數組索引出現錯誤的方式 - 你不想爲每行賦值 - 'data [i] [0] = rs.getString(「Author」);'等等? – Reimeus