0

データを保持するためのカスタム配列リスト設定があります。ただし、arraylist アイテムを呼び出すと、すべてのアイテムが同じになります。

私のarraylistローダー。

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;
}

動物コンストラクター

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();
}
4

2 に答える 2

1

リストしたコードは期待どおりに機能するはずです。エラーはおそらく別の場所にあります。

  • データベースのデータを確認してください
  • whileループのセッターが正しいことをすることを確認してください
  • Animalクラスのフィールドが静的でないことを確認してください
  • 問題が解決しない場合はSystem.out.println(rs.getInt("Herd_ID") + ": " + rs.getString("Herd_Tag_Letter"));、whereループに次のようなものを入れて、出力を確認してください。

これのいくつかが役立つことを願っています:-)

于 2012-04-21T15:36:14.770 に答える
0

配列リスト静的を作成しました

そこから静電気を取り除くだけです

于 2012-04-21T15:29:52.910 に答える