получить все значения из одного класса в метод класса anothed - PullRequest
0 голосов
/ 14 мая 2018

У меня есть класс IntegrationWithDB, в котором я должен метод getConnection() и selectFromDB ().

  • В selectFromDb () у меня есть набор результатов, я хочу получить значения набора результатов в другом методе класса
  • На самом деле это так, но он показывает только последнее значение dataBaseтаблица.
  • Обратите внимание, что я сделал метод получения и установки в классе 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());
       }

          }

, когда я инициализирую метод displayList() в главномметод, он показывает следующий результат

5
red

как я могу получить все пять значений?

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Прежде всего вы должны создать то, что обычно называют Entity классом. Это класс, представляющий одну строку в вашей базе данных. В идеале это должно быть отделено от кода, который взаимодействует с подключением к базе данных.

Итак, первый шаг, создайте класс с именем Contact и поместите в него 4 поля, которые у вас есть: id, name, parent и level, с соответствующими методами получения. Если вы не ожидаете, что они изменятся вашей программой, и они станут неизменными, рекомендуется обеспечить согласованность. Так что-то вроде:

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 объектов для перебора.

0 голосов
/ 14 мая 2018

Я предполагаю, что в настоящее время вы храните эти свойства в переменных типа int / string.На каждой итерации цикла вы перезаписываете значения.Что вам нужно сделать, это сохранить их в некоторой коллекции, такой как ArrayList, и в каждой итерации добавлять () в эту коллекцию.

...