1

行を削除するには、これを行う必要があることを知っています:

        if (table.getSelectedRow() > -1) {
        int rowToTable = table.getSelectedRow();
        int rowToModel = table.convertRowIndexToModel(rowToTable);
        model.removeBook(rowToModel);
    } else {
        JOptionPane.showMessageDialog(null, "Select A Row");
    }

しかし、今、変数なしでこのメソッドを試してrowToModelも、正しく削除されます:

        if (table.getSelectedRow() > -1) {
        int rowToTable = table.getSelectedRow();
        model.removeBook(rowToTable);
    } else {
        JOptionPane.showMessageDialog(null, "Select A Row");
    }

私のremoveBook()方法:

    public void removeBook(int row) {
    Connection connection;
    PreparedStatement preparedStatement;
    String query = "Delete from BookTable where id=?";
    try {
        connection = DriverManager.getConnection(...);
        Object id = this.getValueAt(row, 0);
        preparedStatement = connection.prepareStatement(query);
        preparedStatement.setObject(1, id);

        if (preparedStatement.executeUpdate() == 1) {
            this.removeRow(row);
        }

    } catch (SQLException sqle) {
        sqle.printStackTrace();
    }
}

なぜこの両方が機能するのですか?! そして、どれが正しいですか?

4

1 に答える 1