Mari kita mulai dengan fakta bahwa ArrayList
Anda tidak terstruktur sebagai pengelompokan baris/kolom, Anda memerlukan List
di dalam List
, dengan daftar terluar adalah baris dan daftar dalam adalah nilai kolom
Selagi kita melakukannya, mari manfaatkan juga PreparedStatement
dengan baik dan kelola sumber daya agar ditutup dengan benar saat kita melakukannya
ArrayList<List<String>> customerDetails = new ArrayList<>(25);
String sqlQuery = "SELECT * FROM customer WHERE AccountNumber=?";
try (PreparedStatement stmt = DatabaseConnection.dBconn().prepareStatement(sqlQuery)) {
stmt.setString(1, accountNumber);
try (ResultSet rs = stmt.executeQuery()) {
while (rs.next()) {
List<String> rowDetails = new ArrayList<>(10);
rowDetails.add(rs.getString("Name"));
rowDetails.add(rs.getString("DoB"));
rowDetails.add(rs.getString("Address"));
rowDetails.add(rs.getString("Mobile"));
rowDetails.add(rs.getString("Email"));
rowDetails.add(rs.getString("AccountType"));
rowDetails.add(rs.getString("AccountNumber"));
rowDetails.add(rs.getString("SortCode"));
rowDetails.add(rs.getString("Balance"));
rowDetails.add(rs.getString("Card"));
customerDetails.add(rowDetails);
}
}
} catch (SQLException err) {
System.out.println(err.getMessage());
}
return customerDetails;
Lihat Menggunakan Pernyataan yang Disiapkan dan Pernyataan try-with-resources untuk detail lebih lanjut
Sekarang, kita memerlukan TableModel
yang dapat mendukungnya, pada tingkat paling dasar...
public class ListTableModel extends AbstractTableModel {
private List<List<String>> rows;
private List<String> columnNames;
public ListTableModel(List<String> columnNames, List<List<String>> rows) {
this.rows = new ArrayList<>(rows);
this.columnNames = columnNames;
}
@Override
public int getRowCount() {
return rows.size();
}
@Override
public int getColumnCount() {
return columnNames.size();
}
@Override
public String getColumnName(int column) {
return columnNames.get(column);
}
@Override
public Class<?> getColumnClass(int columnIndex) {
Class type = String.class;
return type;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
List<String> rowData = rows.get(rowIndex);
return rowData.get(columnIndex);
}
}
Ini membutuhkan List
untuk nama kolom dan List<List>
untuk data baris.
Secara pribadi, saya lebih suka untuk membungkus data ke dalam semacam Objek Java Lama Biasa (POJO) karena ia merangkum data dan memberikan fleksibilitas yang lebih besar saat menampilkannya (yaitu, saya perlu menampilkan semua properti objek jika saya tidak melakukannya). tidak mau)
Lihat Cara Menggunakan Tabel untuk detail lebih lanjut
person
MadProgrammer
schedule
22.04.2017
ArrayList
Anda tidak terstruktur sebagai pengelompokan baris/kolom, Anda memerlukanList
di dalamList
, dengan daftar terluar adalah baris dan daftar dalam adalah nilai kolom - person MadProgrammer   schedule 22.04.2017I've been working on a web-service that returns an arraylist.
- mengapa ia mengembalikan ArrayList? Jika Anda mendapatkan semua data dari database mengapa tidak mengembalikanDefaultTableModel
yang berisi semua data saja. Kemudian Anda tinggal membuatJTable
menggunakan model tabel. - person camickr   schedule 22.04.2017