Java ArrayList从数据库重复相同的数据?
我有一个JTable,它使用ArrayList从数据库加载数据,但我有一个问题,即相同的数据会不断重复。 我错过了什么?提前感谢,Java ArrayList从数据库重复相同的数据?,java,swing,jdbc,Java,Swing,Jdbc,我有一个JTable,它使用ArrayList从数据库加载数据,但我有一个问题,即相同的数据会不断重复。 我错过了什么?提前感谢, private void AllTicketRecords() { try { TicketRecordDao ticketrecdao = new TicketRecordDao(); ArrayList<TicketRecord> records = ticketrecdao.getAllTicket
private void AllTicketRecords() {
try {
TicketRecordDao ticketrecdao = new TicketRecordDao();
ArrayList<TicketRecord> records = ticketrecdao.getAllTicketsRecords();
Object[] tableColumnName = new Object[7];
tableColumnName[0] = "Date";
tableColumnName[1] = "H.License";
tableColumnName[2] = "First Name";
tableColumnName[3] = "Last Name";
tableColumnName[4] = "Ticket ID";
tableColumnName[5] = "Violation";
tableColumnName[6] = "Cost";
DefaultTableModel tbd = new DefaultTableModel();
tbd.setColumnIdentifiers(tableColumnName);
this.TicketsSummaryTable.setModel(tbd);
Object[] RowRec = new Object[7];
for (int i = 0; i < records.size(); i++) {
RowRec[0] = records.get(i).getDATE();
RowRec[1] = records.get(i).getEMP_ID();
RowRec[2] = records.get(i).getFNAME().toUpperCase();
RowRec[3] = records.get(i).getLNAME().toUpperCase();
RowRec[4] = records.get(i).getTICKET_ID();
RowRec[5] = records.get(i).getVIOLATION();
RowRec[6] = nf.format(records.get(i).getCOST());
tbd.addRow(RowRec);
}
} catch (SQLException e) {
System.out.println(e.toString());
}
}
public ArrayList<TicketRecord> getAllTicketsRecords() throws SQLException {
String sql = "SELECT DATE, T.EMP_ID ,E.FNAME, E.LNAME ,TICKET_ID, VIOLATION, COST"
+ " FROM EMPLOYEE E INNER JOIN TICKET T ON E.EMP_ID = E.EMP_ID"
+ " ORDER BY DATE";
DBConnection con = new DBConnection();
Connection connect = con.getConnection();
Statement stm = null;
ArrayList<TicketRecord> records = new ArrayList<>();
try {
stm = connect.createStatement();
ResultSet rs = stm.executeQuery(sql);
while (rs.next()) {
TicketRecord tickterec = new TicketRecord();
tickterec.setDATE(rs.getString("DATE"));
tickterec.setEMP_ID(rs.getInt("EMP_ID"));
tickterec.setFNAME(rs.getString("FNAME"));
tickterec.setLNAME(rs.getString("LNAME"));
tickterec.setTICKET_ID(rs.getString("TICKET_ID"));
tickterec.setVIOLATION(rs.getString("VIOLATION"));
tickterec.setCOST(rs.getDouble("COST"));
records.add(tickterec);
}
} catch (SQLException e) {
System.out.println("" + e.toString());
} finally {
if (connect != null) {
connect.close();
}
if (stm != null) {
stm.close();
}
}
return records;
}
private void AllTicketRecords(){
试一试{
TicketRecordDao ticketrecdao=新的TicketRecordDao();
ArrayList records=ticketrecdao.getAllTicketsRecords();
Object[]tableColumnName=新对象[7];
tableColumnName[0]=“日期”;
tableColumnName[1]=“H.License”;
tableColumnName[2]=“名字”;
tableColumnName[3]=“姓氏”;
tableColumnName[4]=“票证ID”;
tableColumnName[5]=“违规”;
tableColumnName[6]=“成本”;
DefaultTableModel tbd=新的DefaultTableModel();
待定。setColumnIdentifiers(tableColumnName);
此.TicketsSummaryTable.setModel(待定);
Object[]RowRec=新对象[7];
对于(int i=0;i
您的问题的主要原因似乎与
Object[] RowRec = new Object[7];
for (int i = 0; i < records.size(); i++) {
RowRec[0] = records.get(i).getDATE();
我还将验证您的数据库结果,以确保没有任何重复项;)
在一个侧节点上,我只需创建一个自定义的
TableModel
,从类似AbstractTableModel
的东西扩展而来,它可以直接使用TicketRecord
,而不是分解DefaultTableModel
的现有记录值,但这就是我当您在其他SQL客户端应用程序中执行SQL语句时,是否得到了不同的结果,我确实在for循环中创建了一个新实例,但是我得到了与之前相同的结果我不知道我缺少了什么,我在搜索按钮下有相同的代码,它工作正常,当我键入ticket id/emp id时,它只给我想要的记录,没有重复从查询中转储结果,可能查询实际上返回的是重复的Hank u,我知道它现在可以正常工作了。问题出在SQL语句中
for (int i = 0; i < records.size(); i++) {
Object[] RowRec = new Object[7];
RowRec[0] = records.get(i).getDATE();