获取从一个类到匿名类方法的所有值



我有一个类IntegrationWithDB,我必须在其中方法getConnection()并选择FromDB((。

  • 在selectFromDb((中我有一个结果集,我想得到结果 在另一个类方法中设置值
  • 实际上它确实如此,但它只显示数据库表的最后一个值。
  • 请注意,我已经在类中制作了 getter 和 setter 方法IntegrationWithDB并在selectFromDB()方法中使用。

    public void selectFromDB(( {

    try {
    if (this.conn == null) {
    this.getConnection();
    }
    if (this.stmt == null) {
    this.stmt = this.conn.createStatement();
    }
    int success = 0;
    this.query = "select * from contacts order by node_id";
    this.rs = this.stmt.executeQuery(query);
    // something is wrong in the while loop
    while (rs.next()) {
    setId(rs.getInt("node_id"));                               // i made getter and setter for id, name, parent and for level
    setNam(rs.getString("node_name"));
    setParnt(rs.getString("node_parent"));
    setLvl(rs.getInt("node_parent"));
    
    }
    
    if (success == 0) {
    this.conn.rollback();
    } else {
    this.conn.commit();
    }
    } catch (Exception ex) {
    ex.printStackTrace();
    }
    

在另一个类test我有方法displayList()在此方法中,我编写以下代码

public class test {

IntegrationWithDbClass qaz = new IntegrationWithDbClass();
public  void displayList ( ) {

qaz.getConnection();
qaz.selectFromDB();

for(int i = 0; i< 5; i++){
System.out.println(" "+qaz.getId()); 
System.out.println(" "+qaz.getNam());
}
}

当我在main方法中启动displayList()方法时,它显示以下结果

5
red

如何获取所有五个值?

首先,您必须创建通常称为Entity类的内容。这是表示数据库中单行的类。理想情况下,这应与与数据库连接交互的代码分开。

所以第一步,创建一个名为Contact的类,并在其中放置您拥有的 4 个字段,idnameparentlevel,以及各自的 getter 方法。如果您不希望程序更改这些内容使它们不可变,则最好确保一致性。所以像这样:

public class Contact {
private final int id;
private final String name;
private final String parent;
private final String level;
public Contact(String id, String name, String parent, String level) {
this.id = id;
this.name = name;
this.parent = parent;
this.level = level;
}
public int getId() {
return id;
}
//... put the rest of the getter methods
}

然后在您的IntegrationWithDB类中(我会将其重命名为更有意义的名称,例如ContactRepository(,您可以将该方法更改为:

public List<Contact> getContacts() {
// ... your database connection and query code here
this.rs = this.stmt.executeQuery(query);
List<Contact> contacts = new LinkedList<Contact>();
while (rs.next()) {
int id = rs.getInt("node_id");                               
String name = rs.getString("node_name");
String parent = rs.getString("node_parent");
String level = setLvl(rs.getInt("level"));
contacts.add(new Contact(id, name, parent, level));
}
//... the rest of your database handling code, don't forget to close the connection
return contacts;
}

然后,从displayList()中,您只需调用getContacts(),它为您提供要迭代Contact对象的列表。

我假设您当前将这些属性存储在 int/string 变量中。在循环的每次迭代中,您都会覆盖这些值。你需要做的是将它们存储在某个集合中,如 ArrayList 和每个迭代 add(( 到这个集合。

相关内容

  • 没有找到相关文章

最新更新