您好,我通过 rs.next() 连接数据库并显示数据,一切正常。我写了一个函数来显示表格中的值,每次我得到一个错误
ArrayIndexOutOfBoundsException: 0 >= 0
我知道索引有错误,但这并没有改变,没有任何反应
public JTable getTable(String nameTbl){
JTable tbl = new JTable();
String querty = "select * from " + nameTbl;
try {
rs = st.executeQuery(querty);
rsmd = rs.getMetaData();
int countCol = rsmd.getColumnCount();
int countRow = rs.getRow();
javax.swing.table.DefaultTableModel dtm = new javax.swing.table.DefaultTableModel();
dtm.setRowCount(0);
int cC = 0;
int cR = 0;
int n = 0;
String[] nameColumn = new String[10];
int c = 0;
for(int i = 1; i <= rsmd.getColumnCount(); i++){
nameColumn[c] = rsmd.getColumnName(i);
c++;
}
while(rs.next()){
dtm.setRowCount(dtm.getRowCount() + 1);
if(cC < countCol){
dtm.setValueAt(rs.getString(nameColumn[cC]), cC, cR);
cC++;
}
if(cC == countCol) cC = 0;
cR++;
}
tbl.setModel(dtm);
} catch (SQLException ex) {
System.out.println("Error " + ex);
}
return tbl;
}
错误的位置
dtm.setValueAt(rs.getString(nameColumn[cC]), cC, cR);
查看方法签名,
javax.swing.table.DefaultTableModel.setValueAt
您似乎在某些地方混淆了 cC 和 cR而且你也没有在任何地方设置列数
dtm.setColumnCount()