数据表中的记录是
A A A A A
B B B B B在把resultset放到jtable中时,这样写:
Vector vCell = new Vector();
while (rs.next()) {
vCell.clear();
for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++)
vCell.add(rs.getObject(i));
vData.add(vCell);
}
结果table中就是错误的:
A A A A A
A A A A A如果这样写:
Vector vCell = null;
while (rs.next()) {
vCell = new Vector();
for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++)
vCell.add(rs.getObject(i));
vData.add(vCell);
}
结果table中就是正确的:
A A A A A
B B B B B
这是为什么??第一种写法我不是用vCell.clear()清空了吗?那应该就循环下一条记录啊!!
A A A A A
B B B B B在把resultset放到jtable中时,这样写:
Vector vCell = new Vector();
while (rs.next()) {
vCell.clear();
for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++)
vCell.add(rs.getObject(i));
vData.add(vCell);
}
结果table中就是错误的:
A A A A A
A A A A A如果这样写:
Vector vCell = null;
while (rs.next()) {
vCell = new Vector();
for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++)
vCell.add(rs.getObject(i));
vData.add(vCell);
}
结果table中就是正确的:
A A A A A
B B B B B
这是为什么??第一种写法我不是用vCell.clear()清空了吗?那应该就循环下一条记录啊!!
最后vData中所有的元素都指向同一个,内容当然同样了
比较清晰的写法是while (rs.next()) {
Vector vCell = new Vector();
for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++)
vCell.add(rs.getObject(i));
vData.add(vCell);
}把Vector的声明写在循环里面
================================================
如果不重新new 一个新的,也就是第一种方法,你一直操作的都是同一个Vector对象
最后vData中所有的元素都指向同一个,内容当然同样了
Vector a = new Vector();
a是new创建的Vector对象的引用,真正的Vector对象实例在内存中
这个add的进去的element是refence,都指向同一块内存,不是具体的字面值。当你再去枚举这个refence指向的内存的值时,他们都指向了你最后一次给他们赋的值。估计应该都是字面值"B".