遇到这类情况,通常是下面步骤出现了问题:
1. 问题: 实例化用于封装数据的类对象 和 实例化存储对象的集合 放错了位置
2.解决思路:一定要将存储对象的集合在循环外面创建并实例化 (如果在循环里面创建的话,相当于每循环读取数据一次就创建 了一个新的集合,这时在往集合里面add()对象时,就是在这个新创建的集合里面添加对象,最终导致了新创建的集 合覆盖了上 一 个创建的集合,所以最后得到的结果就是这个集合里面只有数据库中的最后一条数据)。
对于创建封装数据的对象,建议在循环外面创建,在循环里面实例化,这样每从数据库读取一条数据,数据就有了 一个新的对象引用,节约资源。
code:
list=new ArrayList<Stuscore>();// 实例化用于存储对象的集合 循环外面实例化
while (resultSet.next()){
Stuscore stuscore = new Stuscore();//实例化用于封装数据的对象 循环里面实例化
//将数据封装到对象之中
stuscore.setId(resultSet.getInt("id"));
stuscore.setName(resultSet.getString("named"));
stuscore.setAge( resultSet.getInt("age"));
stuscore.setChinese(resultSet.getDouble("chinese"));
stuscore.setMath( resultSet.getDouble("math"));
stuscore.setEnglish(resultSet.getDouble("english"));
stuscore.setSex(resultSet.getString("sex"));
//将对象装载到集合之中
list.add(stuscore);
}
这样就解决了集合之中只有最后一条数据的情况