Pessoal,
Tenho um código aqui que conecta no banco de dados e lista as tuplas em uma JTable.
Nesse jTable é possível alterar os dados nas linhas, porém preciso que essa lteração seja feita também no banco de dados.
Nesse código, eu utilizo o DefaultTableModel e o professor exige que utilizemos esse recurso.
Vi tópicos sobre DAO e me parecem ser menos complicados, mas nesse caso tenho que usar o DefaultTable MOdel mesmo.
Se alguém puder me dar uma ajuda, agradeço muito.
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.event.CellEditorListener;
import javax.swing.event.ChangeEvent;
import javax.swing.table.DefaultTableModel;
public class Jtable_ResultSet extends JFrame
implements CellEditorListener{
String[] colunasTabela =
new String[]{“serial”,“titulo”,
“descricao”,“duracao”};
static final String DATABASE_URL =
“jdbc:mysql://127.0.0.1:3306/locadora”;
JTable tab;
DefaultTableModel modeloTabela;
public Jtable_ResultSet(){
Connection con = null;
Statement stm = null;
ResultSet rs = null;
try{
//Table Model
modeloTabela =
new DefaultTableModel(null,colunasTabela);
tab = new JTable();
tab.setModel(modeloTabela);
//DB connection
con = DriverManager.getConnection(
DATABASE_URL, "root", "root");
stm = con.createStatement();
rs = stm.executeQuery("select * from dvd");
while(rs.next()){
modeloTabela.addRow(new String[]{
Integer.toString(
rs.getInt("serial")),
rs.getString("titulo"),
rs.getString("descricao"),
Integer.toString(rs.getInt("duracao"))
});
}
tab.setEnabled(true);
JPanel painelTabela = new JPanel();
painelTabela.add(new JScrollPane(tab));
painelTabela.setLayout(new GridLayout(1, 1));
add(painelTabela, BorderLayout.CENTER);
tab.getDefaultEditor(String.class).addCellEditorListener(this);
}catch(SQLException s){
System.err.println(s);
}catch(Exception e){
System.err.println(e);
}
}
@Override
public void editingCanceled(ChangeEvent arg0) {
JOptionPane.showMessageDialog(null,
"Operação Cancelada");
}
@Override
public void editingStopped(ChangeEvent arg0) {
JOptionPane.showMessageDialog(null,
"Operação Finalizada: "+
tab.getSelectedRow()+" "+ //obtém a linha selecionada
tab.getModel().getValueAt(
tab.getSelectedRow(), 1));//obtém o valor da coluna 0
modeloTabela.removeRow(tab.getSelectedRow());
tab.validate();
}
}