javaswingjtableabstracttablemodel

Definition TableModel removeRow() method


This is my tableModel:

public class d9 extends AbstractTableModel {

ArrayList<String> cols = new ArrayList<>();
ArrayList<ArrayList<String>> data = new ArrayList<>();

public d9() {
...
int c = resultSet.getMetaData().getColumnCount();
            while (resultSet.next()) {
            ArrayList<String> eachRow = new ArrayList<>();
            for (int i = 1; i <= c; i++) {
                eachRow.add(resultSet.getString(i));
            }
            data.add(eachRow);
        }
...
}

@Override
public int getRowCount() {
return data.size();
}

@Override
public int getColumnCount() {
return cols.size();
}

@Override
public Object getValueAt(int rowIndex, int columnIndex) {
ArrayList<String> selectedRow = data.get(rowIndex);
return selectedRow.get(columnIndex);
}

@Override
public String getColumnName(int column) {
return cols.get(column);
}

public void removeRow(int rowNumber) {
data.remove(rowNumber);
fireTableRowsDeleted(rowNumber, rowNumber);
}
}

Now, after passing a convertRowIndexToModel line number to removeRow method Row remove from table, But after re-run program, It come back!


Solution

  • When you call removeRow you need to try and remove the row from the database.

    Now because I have no idea what the structure of your database is, you will need to fill in the details, but this a simple outline of what you need to do

    public void removeRow(int rowNumber) throws SQLException {
        Connection con = ...;
        PreparedStatement ps = null;
    
        String keyValue = ...; // Get key value from the ArrayList
    
        try {
            ps = con.prepareStatement("DELETE from youDatabaseTabe where key=?");
            ps.setObject(1, keyValue);
            if (ps.executeUpdate() == 1) {
                data.remove(rowNumber);
                fireTableRowsDeleted(rowNumber, rowNumber);
            } else {
                throw new SQLException("Failed to remove row from database");
            }
        } finally {
            try {
                ps.close();
            } catch (Exception e) {
            }
        }
    }
    

    You may want to spend some time having a read through JDBC Database Access