Então, coloquei o print agora e, realmente, o id tá saindo certo. Eu não sei o que está errado, mas no método que puxa o remover, eu pego o número da posição da tabela, esse número é usado como parâmetro de um método que puxa o objeto que está nessa posição e esse objeto passa como parâmetro pro remover.
Segue os códigos para você entender:
Código do botão excluir:
public void btExcluirClick(ActionEvent e) {
int i = tab.getSelectedRow();
System.out.println("numero da tab " + i);
if (i != -1) {
int x = JOptionPane.showConfirmDialog(this, “Tem certeza que deseja excluir este dado?”, “Confirmação”,
JOptionPane.WARNING_MESSAGE);
if (x == 0) {
Categoria c = new TableModelCategoria().getCategoria(i);
System.out.println("id do categoria q ta no btexcluir " + c.getId());
CategoriaDAO cd = new CategoriaDAO();
cd.remover(c);
this.setVisible(false);
this.setVisible(true);
}
} else {
JOptionPane.showMessageDialog(this, “Escolha algum dado!”, “Aviso”, JOptionPane.PLAIN_MESSAGE);
}
}
Código do remover:
public void remover(Categoria c) {
String sql = “delete from tbCategoria where id = ?”;
try {
Connection con = new ConnectionFactory().getConnection();
PreparedStatement st = con.prepareStatement(sql);
st.setInt(1, c.getId());
System.out.println(c.getId());
st.execute();
st.close();
con.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
E também o código que eu usei pra criar a tabela Categoria:
create table tbCategoria(
id int primary key auto_increment,
nome varchar(200) not null
);