运行结果如下图所示,为什么只能把第一条记录显示出来?

这是其中一部分代码:

JFrame f = new JFrame("显示学生信息");
System.out.println(sql);
DbManager db = new DbManager();
ResultSet rs = db.executeQuery(sql);
Vector<String> v = new Vector<String>();
Vector row = new Vector();
try {
while (rs.next()) {
String s = " ";
v.add(s + rs.getString("id"));
v.add(s + rs.getString("name"));
v.add(s + rs.getString("gender"));
v.add(s + rs.getString("birth"));
row.add(v);
}
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
db.close();
Vector<String> titles = new Vector<String>();
titles.add("学号");
titles.add("姓名");
titles.add("性别");
titles.add("生日");
JTable jl = new JTable(row, titles);
JScrollPane scr = new JScrollPane(jl);
f.add(scr);
f.setSize(500, 280);
f.setBackground(Color.black);
f.setLocation(390, 280);
f.setVisible(true);

运行结果如图所示,只能把第一条记录显示出来。



隔江千里
浏览 133回答 1
1回答

交互式爱情

你的vector每次加V的时候都是加的V的引用!而你往V里面灌数据的时候每次都会把前面的数据抹掉。导致这种情况,类似丢芝麻捡西瓜那种。你可以把row.add(v)改成row.add(v.clone)试试!如果clone这方法没实现就自己写写。反正返回一个新的对象就OK了。
打开App,查看更多内容
随时随地看视频慕课网APP