很奇怪的问题,大家来看看。 DepartmentVO depvo = new DepartmentVO();放入while(rs.next())循环里 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 正如楼上所言,因为一直到rs.next()完了都是对一个DepartmentVO放数据,所以arraylist只能加到最后一次的值,如果放在循环里面,每次都会生成新的DepartmentVO对象来存放数据。 ArrayList al = new ArrayList(); ResultSet rs = null; PreparedStatement pstmt = null; String sSql = "select * from Department"; try { pstmt = conn.prepareStatement(sSql); rs = pstmt.executeQuery(); while(rs.next()) { DepartmentVO depvo = new DepartmentVO();//放到这里就能满足你的要求了 depvo.setDepartmentID(rs.getString("DepartmentID")); depvo.setDepartmentName(rs.getString("DepartmentName")); al.add(depvo); } return al; } catch(Exception ex) { this.error("Query department error,pleasse check!"); throw ex; } finally { releaseResult(rs); releaseStatement(pstmt); } } 这么解释,al.add(depvo)加的是内存里的地址。虽然你add了那么多条记录,但是你所有记录都是用同一个内存地址里的值。而最后跳出循环的值是最后一个记录的值,所以所有的值都是最后一条记录。:) 非常同意 cyicecream的一句话:al.add(depvo)加的是内存里的地址。虽然你add了那么多条记录,但是你所有记录都是用同一个内存地址里的值 一道和魔兽争霸有关的线程题目,有兴趣的来看看 java中的ToolKit类的使用的问题 求助GUI 游戏变成 请教,java打印怎么控制打印效果? 类继承的问题.谢谢 哪位仁义的大哥能帮小弟个忙。。一个让我头疼的编程 一个原则性的小问题, 关于ILOG的应用的一个错误,请高手帮忙分析原因,感激不尽,一定重谢 Tomcat+IIS+Apache 配置全攻略 分享基于JDK1.5开发设计的应用程序包提供,欢迎大家指导 linux的JDK的配置??急 成功就揭贴
ResultSet rs = null;
PreparedStatement pstmt = null;
String sSql = "select * from Department";
try
{
pstmt = conn.prepareStatement(sSql);
rs = pstmt.executeQuery(); while(rs.next())
{
DepartmentVO depvo = new DepartmentVO();//放到这里就能满足你的要求了
depvo.setDepartmentID(rs.getString("DepartmentID"));
depvo.setDepartmentName(rs.getString("DepartmentName"));
al.add(depvo);
}
return al;
}
catch(Exception ex)
{
this.error("Query department error,pleasse check!");
throw ex;
}
finally
{
releaseResult(rs);
releaseStatement(pstmt);
}
}