我需要通过JTABLE显示来自表格的数据,我用谷歌搜索了几个小时,最后成功找到了执行此操作的代码,并且工作正常但是有一个问题来自netbeans我认为
这是我的桌子
它有6列,
这是我的jtable
这就是结果
现在发布到这里之前我尽力去谷歌或阅读关于jtables的oracle文档,无法找到关于这个奇怪问题的任何事情, 如果我使用4列,它显示4列数据,我从设计增加1列,它开始显示5列数据(完美),当我最后添加1个最后一列,它仍然显示5列数据
这是代码
try {
MyConnection mc = new MyConnection();
Class.forName(mc.driver);
Connection connect = DriverManager.getConnection(mc.login);
Statement smt = connect.createStatement();
ResultSet rs = smt.executeQuery("select * from library_member");
ResultSetMetaData rsmeta = rs.getMetaData();
int columns = rsmeta.getColumnCount();
DefaultTableModel dtm = new DefaultTableModel();
Vector columns_name = new Vector(), data_rows = new Vector();
for(int i = 1; i < columns; i++){
columns_name.addElement(rsmeta.getColumnName(i));
}
dtm.setColumnIdentifiers(columns_name);
while(rs.next()){
data_rows = new Vector();
for(int j = 1; j < columns; j++){
data_rows.addElement(rs.getString(j));
}
dtm.addRow(data_rows);
}
jTable1.setModel(dtm);
} catch (Exception ex) {
ex.printStackTrace();
}
P.S它没有显示的列我觉得因为member_email得到1个空值,如果是真的,应该如何允许它,
问题!! :如何从4增加rowCount?它在netbeans designview中无法使用,我没有足够的时间自己创建一个jtable
我在member_id = 2更新了member_email,仍未显示:(
答案 0 :(得分:3)
你的计算不正确。在for循环中将i = 1更改为i = 0.
for(int i = 0; i < columns; i++){
columns_name.addElement(rsmeta.getColumnName(i+1));
}
以及:
for(int j = 0; j < columns; j++){
data_rows.addElement(rs.getString(j+1));
}
另请注意MadProgrammer的评论,即JDBC行索引从1开始,而不是0.这就是为什么你还需要getColumnName(i + 1)和getString(j + 1)。
或者你可以在你的循环中从1开始计数并测试&lt; =列,如:
for(int i = 1; i <= columns; i++){
columns_name.addElement(rsmeta.getColumnName(i));
}