Hello all i want to display entire content of my database table on html page.I am trying to fetch record from database first and store in ArrayList
but when i return array list on html page it display only last record repeatedly as count of my database table.
Here is the code below :
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;
}
Try with the following code
public static ArrayList<Customer> getAllCustomer() throws ClassNotFoundException, SQLException {
Connection conn=DBConnection.getDBConnection().getConnection();
Statement stm;
stm = conn.createStatement();
String sql = "Select * From Customer";
ResultSet rst;
rst = stm.executeQuery(sql);
ArrayList<Customer> customerList = new ArrayList<>();
while (rst.next()) {
Customer customer = new Customer(rst.getString("id"), rst.getString("name"), rst.getString("address"), rst.getDouble("salary"));
customerList.add(customer);
}
return customerList;
}
this is my model class
public class Customer {
private String id;
private String name;
private String salary;
private String address;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSalary() {
return salary;
}
public void setSalary(String salary) {
this.salary = salary;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
this is my view method
private void reloadButtonActionPerformed(java.awt.event.ActionEvent evt) {
try {
ArrayList<Customer> customerList = null;
try {
try {
customerList = CustomerController.getAllCustomer();
} catch (SQLException ex) {
Logger.getLogger(veiwCustomerFrame.class.getName()).log(Level.SEVERE, null, ex);
}
} catch (Exception ex) {
Logger.getLogger(ViewCustomerForm.class.getName()).log(Level.SEVERE, null, ex);
}
DefaultTableModel tableModel = (DefaultTableModel) customerTable.getModel();
tableModel.setRowCount(0);
for (Customer customer : customerList) {
Object rowData[] = {customer.getId(), customer.getName(), customer.getAddress(), customer.getSalary()};
tableModel.addRow(rowData);
}
} catch (Exception ex) {
Logger.getLogger(ViewCustomerForm.class.getName()).log(Level.SEVERE, null, ex);
}
}
You are reusing the customer
reference. Java works by reference for Obejcts. Not for primitives.
What you are doing is adding to the list the same customer
and then modifying it. Thus setting the same values for all of objects. That's why you see the last. Because all are the same.
while (rs.next()) {
Customer customer = new Customer();
customer.setId(rs.getInt("id"));
...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With