14 Stimmen

Daten aus der Datenbank lesen und in einem Array-Listenobjekt speichern

Hallo, ich möchte den gesamten Inhalt meiner Datenbanktabelle auf einer Html-Seite anzeigen. Ich versuche, den Datensatz zuerst aus der Datenbank zu holen und in ArrayList aber wenn ich Array-Liste auf HTML-Seite zurückgeben es nur letzte Datensatz wiederholt als Zählung meiner Datenbanktabelle angezeigt. Hier ist der Code unten:

public ArrayList<CustomerDTO> getAllCustomers() 
{
    ArrayList<CustomerDTO> customers = new ArrayList<CustomerDTO>();
    CustomerDTO customer = null;
    Connection c;
    try {
        c = openConnection();
        Statement statement = c.createStatement();
        String s = "SELECT * FROM customer";

        ResultSet rs = statement.executeQuery(s);
        int g =0;

        while (rs.next()) {

            customer.setId(rs.getInt("id"));
            customer.setName(rs.getString("name"));

            customer.setAddress(rs.getString("address"));
            customer.setPhone(rs.getString("phone"));
            customer.setEmail(rs.getString("email"));
            customer.setBountPoints(rs.getInt("bonuspoint"));
            customer.setTotalsale(rs.getInt("totalsale"));

            customers.add(customer);
        }

        rs.close();
    } catch (Exception e) {
        System.out.println(e);
    }

    return customers;
}

0voto

Sujay Punkte 6743

Ich versuche, einen Datensatz aus der Datenbank zu holen und in einer ArrayList zu speichern aber wenn ich die Array-Liste auf der HTML-Seite wiedergebe, wird nur der letzte Datensatz angezeigt wiederholt als Zählung meiner Datenbanktabelle

Dieser Teil wurde durch die vorherigen Antworten bereits weitgehend abgedeckt. Sie müssten also eine neue Instanz Ihrer CustomerDTO innerhalb Ihrer while Schleife und fügen Sie sie zu Ihrer ArrayList .

Es gibt noch eine Sache, die ich ansprechen wollte:

  • Vergewissern Sie sich, dass Sie alle Ihre Ressourcen freigeben, wenn Sie sie nicht mehr benötigen. Aus dem Code, den Sie gepostet haben, geht hervor, dass Sie Ihre Ressourcen nicht geschlossen haben. Statement oder Ihr Connection Objekte ( Ich bin mir nicht sicher, ob Sie Ihre Verbindung in einem Pool zusammenfassen; in diesem Fall müssten Sie diese Verbindung für den Pool freigeben. )

Wenn Sie also diese Punkte berücksichtigen, könnte die Struktur Ihres Codes etwa so aussehen:

public ArrayList<CustomerDTO> getAllCustomers() 
{
    ArrayList<CustomerDTO> customers = new ArrayList<CustomerDTO>();
    Connection c = null;
    Statement statement = null;
    ResultSet rs        = null;

    try {
        c           = openConnection();
        statement   = c.createStatement();
        String s    = "SELECT * FROM customer";

        rs          = statement.executeQuery(s);
        int g =0;

        while (rs.next()) {
            CustomerDTO customer = new CustomerDTO();
            //Code to fill up your DTO
            customers.add(customer);
        }
    } catch (Exception e) {
        System.out.println(e);
    }finally{
        //Code to release your resources
    }

    return customers;
}

0voto

CRUCIFIX Punkte 1

Wenn Ihre Kundenklasse statische Variablen hat, entfernen Sie diese, so dass Ihre Klasse etwa so aussehen sollte.

public class customer {

     private int id;
     private String name;
     private String DOB;

    public int getId() {
        return id;
    }
    public String getName() {
        return name;
    }
    public String getDOB() {
        return DOB;
    }
     public void setId(int id) {
        this.id = id;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void setDOB(String dOB) {
        this.DOB = dOB;
    }

anstelle von etwas wie

public class customer {

     private static int id;
     private static String name;
     private static String DOB;

    public static int getId() {
        return id;
    }
    public static String getName() {
        return name;
    }
    public static String getDOB() {
        return DOB;
    }
     public static void setId(int id) {
        custumer.id = id;
    }
    public  static void setName(String name) {
        customer.name = name;
    }
    public static void setDOB(String dOB) {
        customer.DOB = dOB;
    }

0voto

Richard Flores Punkte 71

Instead of null , use CustomerDTO customers = new CustomerDTO()`;

CustomerDTO customer = null;

  private static List<Author> getAllAuthors() {
    initConnection();
    List<Author> authors = new ArrayList<Author>();
    Author author = new Author();
    try {
        stmt = (Statement) conn.createStatement();
        String str = "SELECT * FROM author";
        rs = (ResultSet) stmt.executeQuery(str);

        while (rs.next()) {
            int id = rs.getInt("nAuthorId");
            String name = rs.getString("cAuthorName");
            author.setnAuthorId(id);
            author.setcAuthorName(name);
            authors.add(author);
            System.out.println(author.getnAuthorId() + " - " + author.getcAuthorName());
        }
        rs.close();
        closeConnection();
    } catch (Exception e) {
        System.out.println(e);
    }
    return authors;
}

0voto

Deepika Punkte 1
 while (rs.next()) {

            customer.setId(rs.getInt("id"));
            customer.setName(rs.getString("name"));

            customer.setAddress(rs.getString("address"));
            customer.setPhone(rs.getString("phone"));
            customer.setEmail(rs.getString("email"));
            customer.setBountPoints(rs.getInt("bonuspoint"));
            customer.setTotalsale(rs.getInt("totalsale"));

            customers.add(customer);
             customer = null;
        }

Versuchen Sie, den Code der while-Schleife durch den oben genannten Code zu ersetzen. Hier haben wir Folgendes getan, nachdem wir customers.add(customer) wir machen Kunde = null;`

0voto

Suraj Sangani Punkte 31

KundenDTO-Objekt jedes Mal innerhalb der while-Schleife erstellen

Prüfen Sie den folgenden Code

    while (rs.next()) {

    Customer customer = new Customer();

    customer.setId(rs.getInt("id"));
    customer.setName(rs.getString("name"));
    customer.setAddress(rs.getString("address"));
    customer.setPhone(rs.getString("phone"));
    customer.setEmail(rs.getString("email"));
    customer.setBountPoints(rs.getInt("bonuspoint"));
    customer.setTotalsale(rs.getInt("totalsale"));

    customers.add(customer);
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X