Olá pessoal.
Estou com o seguinte problema:
Tenho uma JTable que carrega os dados do MySql. Quando dou um clique na JTable o sistema me pergunta se eu quero excluir
o cliente selecionado. Se eu clicar em sim, este cliente é excluído do banco de dados e da JTable mas, não estou conseguindo
excluir do banco de dados. Excluir do JTable eu até consigo mas não do banco.
Alguém pode me ajudar?
final DefaultTableModel modelo = new DefaultTableModel();
JTableDados = new JTable(modelo);
modelo.addColumn("ID");
modelo.addColumn("Nome");
modelo.addColumn("CPF");
modelo.addColumn("Telefone");
modelo.addColumn("Nascimento");
modelo.addColumn("Cadastro");
JTableDados.getColumnModel().getColumn(0).setPreferredWidth(10);
JTableDados.getColumnModel().getColumn(1).setPreferredWidth(250);
JTableDados.getColumnModel().getColumn(2).setPreferredWidth(70);
JTableDados.getColumnModel().getColumn(3).setPreferredWidth(70);
JTableDados.getColumnModel().getColumn(4).setPreferredWidth(70);
JTableDados.getColumnModel().getColumn(5).setPreferredWidth(50);
JTableDados.setFont(new Font("Segoe UI",Font.PLAIN,11));
JTableDados.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.LOWERED));
JTableDados.setSelectionBackground(Color.YELLOW);
JTableDados.setSelectionForeground(Color.BLUE);
JTableDados.setDefaultRenderer(Object.class, new ColorRenderer()); // Chama a Classe que intercala as cores da JTable
JTableDados.setFocusable(false); //Evita o foco
JTableDados.setAutoCreateRowSorter(true);
JTableDados.setFont(new Font("Lucida Console",Font.PLAIN,11));
JTableDados.getTableHeader().setResizingAllowed(false);// evita que as colunas sejam redimensionadas
JTableDados.getTableHeader().setReorderingAllowed(false);// evita que as colunas sejam reordenadas
JTableDados.setShowGrid(false);// oculta a grade da tabela
JTableDados.setShowHorizontalLines(false);// oculta as linhas horizontais da tabela
JTableDados.setShowVerticalLines(false);// oculta as linhas verticais da tabela
JScrollPane1.setViewportView(JTableDados);
JPanel2 = new JPanel();
JPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createTitledBorder(null, "", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Segoe UI", 0, 11)), "Clientes Cadastrados", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Segoe UI", 0, 11)));
JPanel2.setFont(new Font("Segoe UI",Font.PLAIN,11));
JPanel2.setOpaque(false);
JPanel2.setBounds(140, 370, 840, 340);
JLabelFundo.add(JPanel2);
try
{
String url = "jdbc:mysql://localhost:3306/javalocadora";
String usuario = "root";
String senha = "210683";
Class.forName("com.mysql.jdbc.Driver");
Connection con;
con = DriverManager.getConnection(url,usuario,senha);
Statement st = con.createStatement();
//Executa o comando SQL que retorna todos os campos da tabela desejada
ResultSet RS = st.executeQuery("SELECT * FROM Clientes WHERE ID");
while(RS.next()){
int ID = RS.getInt("ID");
String Nome = RS.getString("Nome");
//endereço = RS.getString("Endereco");
String cpf = RS.getString("CPF");
String telefone = RS.getString("Telefone");
String nascimento = RS.getString("DataNasc");
String cadastro = RS.getString("DataCadastro");
modelo.addRow(new Object[]{new Integer(ID), new String(Nome),new String(cpf),new String(telefone),new String(nascimento),new String(cadastro)});
}
con.close();
RS.close();
}catch(SQLException e){ //trata os erros
//JOptionPane.showMessageDialog(this,"Erro Cmdo SQL "+e.getMessage());
}
catch(Exception event) {
}
//Exclui dados da JTable e do banco de dados
JTableDados.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
int status = JOptionPane.showConfirmDialog(null,"Deseja excluir este cliente?","Atenção",JOptionPane.YES_NO_OPTION);
if (status == JOptionPane.YES_OPTION) {
try
{
String url = "jdbc:mysql://localhost:3306/javalocadora";
String usuario = "root";
String senha = "210683";
Class.forName("com.mysql.jdbc.Driver");
Connection con;
con = DriverManager.getConnection(url,usuario,senha);
Statement st = con.createStatement();
st.executeUpdate("DELETE * FROM Clientes WHERE ID ="+JTableDados.getSelectedRow());
int[] l = JTableDados.getSelectedRows();
javax.swing.table.DefaultTableModel dtm = (javax.swing.table.DefaultTableModel)JTableDados.getModel();
for(int i = 0; i < l.length; i++)
dtm.removeRow(l[i] - i);
con.close();
}
catch(Exception event) {
JOptionPane.showMessageDialog(null,"Não foi possível estabelecer conexão com o banco de dados!","Erro",JOptionPane.ERROR_MESSAGE);
}
}
}});