日期:2014-05-18  浏览次数:20897 次

请教一个jdbc的问题
while(rs.next()){
              TmColor color=new TmColor();
              color.setColorCode(rs.getString("COLOR_CODE"));
              color.setColorName(rs.getString("COLOR_NAME"));
              color.setCreateBy(rs.getLong("UPDATE_BY"));
              color.setCreateDate(rs.getTimestamp("CREATE_DATE"));
              color.setEntityCode(rs.getString("ENTITY_CODE"));
              color.setOemTag(rs.getInt("OEM_TAG"));
              color.setUpdateBy(rs.getLong("UPDATE_BY"));
              color.setUpdateDate(rs.getTimestamp("UPDATE_DATE"));
              color.setVer(rs.getInt("VER"));
              colorList.add(color);       
}
为什么color对象只有在while里面创建,colorList才可以得到数据集的全部记录?
而在while外面的时候,colorList里面全都是重复的rs的最后一条记录?多谢

------解决方案--------------------
当然的了,在while外面new,就创建一个实例,在见过循环的时候,每次循环都是后面的覆盖前面的,就这样之前覆盖下来就剩下最后一条记录了
在在while里面new,每次都是一个新的实例不存在覆盖的情况,这样add到list都是不同的了
在慢慢消化一下!!!
------解决方案--------------------
这里就是实例化的问题,实例化必须在while里面实例化,你只可以在外面声明对象!如果你在外面就实例化的话它就只可以ADD一个COLOR对象!因为地址都是一样的!
------解决方案--------------------
同一个对象引起的

引用:
当然的了,在while外面new,就创建一个实例,在见过循环的时候,每次循环都是后面的覆盖前面的,就这样之前覆盖下来就剩下最后一条记录了
在在while里面new,每次都是一个新的实例不存在覆盖的情况,这样add到list都是不同的了
在慢慢消化一下!!!

------解决方案--------------------
引用:
同一个对象引起的

引用:
当然的了,在while外面new,就创建一个实例,在见过循环的时候,每次循环都是后面的覆盖前面的,就这样之前覆盖下来就剩下最后一条记录了
在在while里面new,每次都是一个新的实例不存在覆盖的情况,这样add到list都是不同的了
在慢慢消化一下!!!

+1
------解决方案--------------------
同一个对象,同一个引用,循环值更新,从始终唯一。。。。。
你可以把COLOR类声明放在外面,然后根据COLOR类循环创建COLOR对象,并加入List中
TmColor color = null;
while(rs.next()){
              color=new TmColor();
              color.setColorCode(rs.getString("COLOR_CODE"));
              color.setColorName(rs.getString("COLOR_NAME"));
              color.setCreateBy(rs.getLong("UPDATE_BY"));
              color.setCreateDate(rs.getTimestamp("CREATE_DATE"));
              color.setEntityCode(rs.getString("ENTITY_CODE"));
              color.setOemTag(rs.getInt("OEM_TAG"));
              color.setUpdateBy(rs.getLong("UPDATE_BY"));