// 查---->读者、管理员查询已借阅的书籍
public List query(String userid,String yujie){
int i=0;
ResultSet rs=null;
ResultSet rs1=null;
Borrow borrow=new Borrow();
Book book=new Book();
List borrowlist=new ArrayList();
String sql="select * from borrow where userid='"+userid+"' and yujie='"+yujie+"'";
String book_id="";
rs=db.executeQuery(sql);
try {
while(rs.next()){
book_id=rs.getString("book_id");
borrow.setBook_id(book_id);
borrow.setUserid(rs.getString("userid"));
borrow.setFirstday(rs.getString("firstday"));
borrow.setDays(rs.getInt("days"));
borrow.setYujie(rs.getString("yujie"));
sql="select * from book where book_id="+book_id;
rs1=db.executeQuery(sql);
if(rs1.next()){
borrow.setTitle(rs1.getString("title"));
borrow.setAuthor(rs1.getString("author"));
borrow.setPresser(rs1.getString("presser"));
borrow.setStore_place(rs1.getString("store_place"));
borrow.setTotal(rs1.getInt("total"));
}
borrowlist.add(i,borrow);
i++;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return borrowlist;
}
为什么borrowlist里的内容全是一样的。???

解决方案 »

  1.   

    Borrow 对象放到while循环里面new
      

  2.   

    import java.util.*;public class ListTest {
    public static void main(String [] args) {
    List<Person> persons1 = new ArrayList<Person>(5);
    Person personOnlyOne = new Person();
    for (int i=0;i<5;i++) {
    //每次都对该句柄指向的对象进行修改,并置入list中,那么list中最终所有的
    //Person对象都是同一个对象,自然也就一改全改了
    personOnlyOne.setName("person_" + i);
    persons1.add(personOnlyOne);
    }
    System.out.println(persons1);
    //比较这两个对象的内存地址,结果显示这两个对象其实是同一个对象
    System.out.println(persons1.get(0) == persons1.get(1));

    List<Person> persons2 = new ArrayList<Person>(5);

    for (int i=0;i<5;i++) {
    Person person = new Person();
    person.setName("person_" + i);
    persons2.add(person);
    }
    System.out.println(persons2);
    System.out.println(persons2.get(0) == persons2.get(1));
    }
    }
    class Person {
    private String name;
    public void setName(String name) {
    this.name = name;
    }
    public String getName() {
    return name;
    }
    @Override public String toString() {
    return name;
    }
    }