Question

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!

Was it helpful?

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top