Java自定义ArrayList所有条目都相同
我有一个自定义的arraylist设置来保存数据。 但是,当我调用arraylist项时,所有项都是相同的 我的arraylist加载器Java自定义ArrayList所有条目都相同,java,arraylist,h2,Java,Arraylist,H2,我有一个自定义的arraylist设置来保存数据。 但是,当我调用arraylist项时,所有项都是相同的 我的arraylist加载器 public static ArrayList<Animal> getTblHerd() throws Exception { CC_H2 db = new CC_H2(); db.Connect(Variables.getStrConn(), Variables.getStrUser(), Variable
public static ArrayList<Animal> getTblHerd() throws Exception {
CC_H2 db = new CC_H2();
db.Connect(Variables.getStrConn(), Variables.getStrUser(),
Variables.getStrPassword(), "Embedded");
ResultSet rs = db.query("Select HERD_ID FROM tblHerd ORDER BY HERD_ID ASC");
ArrayList<Animal> alAnimals = new ArrayList<Animal>();
while (rs.next()) {
int i = rs.getInt("HERD_ID");
alAnimals.add(new Animal(i));
}
db.Disconnect();
return alAnimals;
}
您已经创建了静态数组列表
只需从那里删除static,我认为您列出的代码应该可以正常工作,错误可能在其他地方
- 检查数据库中的数据
- 检查while循环中的setter,做正确的事情
- 检查Animal类中的字段是否为静态字段
- 如果问题仍然存在,请尝试放置类似于
System.out.println(rs.getInt(“Herd_ID”)+”:“+rs.getString(“Herd_标记字母”)将>编码到where循环中并检查输出
希望这些能有所帮助:-)你说它们是一样的是什么意思?相同的身份证?同一封标签信?你确定你在GetBlherd中得到了不同的ID吗?也许您可以在
inti=rs.getInt(“牧群ID”)之后立即打印或记录i
代码>你试过什么?数据库中的条目实际上不同吗?Isrs.getInt(“羊群ID”)代码>返回不同的id?检查你的id。我认为每次都是一样的。在这种情况下应该无关紧要:不是数组列表是静态的,而是创建数组列表的方法是静态的。每次调用getTblHerd()
,都会创建一个新的ArrayList
。我将动物类中的变量设置为static。谢谢
public Animal(int intAnimal_ID) throws Exception{
CC_H2 db = new CC_H2();
db.Connect(Variables.getStrConn(), "admin", "", "Embedded");
ResultSet rs = db.query("Select * FROM tblHerd WHERE HERD_ID = "
+ intAnimal_ID);
while (rs.next()) {
setIntHerd_id(rs.getInt("Herd_ID"));
setStrHerd_Tag_Letter(rs.getString("Herd_Tag_Letter"));
setIntHerd_Tag_Num(rs.getInt("Herd_Tag_Num"));
setStrHerd_Tag_Color(rs.getString("Herd_Tag_Color"));
setStrHerd_Sex(rs.getString("Herd_Sex"));
setStrHerd_Type(rs.getString("Herd_Type"));
setDtHerd_Birthdate(rs.getDate("Herd_Birthdate"));
setIntHerd_Sire(rs.getInt("Herd_Sire"));
setIntHerd_Dam(rs.getInt("Herd_Dam"));
setIntHerd_Owner(rs.getInt("Herd_Owner"));
setDtHerd_TimeStamp(rs.getDate("Herd_TimeStamp"));
setStrHerd_Status(rs.getString("Herd_Status"));
setDtHerd_Status_Date(rs.getDate("Herd_Status_Date"));
}
db.Disconnect();
}