从表到通过id的多个删除记录,链接到数据库

时间:2014-01-23 15:24:26

标签: java database swing jtable

我的问题:如何允许用户通过按钮从jtable执行多次删除。表格为
链接到我的数据库。我在另一个类中创建了一个表模型并链接到我的SalesReceiptTable。 当用户单击删除按钮时,我能够从db和table中删除一行。 我应该为rowSelected ??

进行循环
    //Button to perform delete
    JButton btnDelete = new JButton("Delete");
btnDelete.setFont(new Font("Tahoma", Font.PLAIN, 13));
btnDelete.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
    int rowSelected=SalesReceiptTable.getSelectedRow();
if(rowSelected>=0)
{
String id = SalesReceiptTable.getValueAt(rowSelected, 7).toString();
SalesReceipt1 e1=new SalesReceipt1(Integer.parseInt(id));
    e1.deleteSalesReceipt();
ArrayList<SalesReceipt1> result= SalesReceipt1.retrieveAllSalesReceipt();
SalesReceiptTableModel model= new SalesReceiptTableModel(result);
SalesReceiptTable.setModel(model);
    }
else{
JOptionPane.showMessageDialog(null,"No record selected","Alert", JOptionPane.ERROR_MESSAGE);
    }

    //My sql statement in my entity class
    public boolean deleteSalesReceipt(){
boolean success = false;
DBController db = new DBController();
    String dbQuery; 
db.getConnection();
    dbQuery = "DELETE FROM SalesReceipt WHERE salesReceiptId ='" + salesReceiptId +"'"; 
    if (db.updateRequest(dbQuery) == 1){
success = true;
                               }
    db.terminate();
    return success;
}

1 个答案:

答案 0 :(得分:2)

有几种方法可以:

  • 在表格ListSelectionModel.MULTIPLE_INTERVAL_SELECTION方法中指定setSelectionMode(),如here所示,并检查getSelectedRows()返回的结果。

  • 添加一列复选框,如here所示,并仅在选择任何内容时启用删除按钮。

在所有情况下,

  • 在视图和模型行索引之间进行转换,如herehere所述。

  • 考虑使用List<Row>支持撤消来缓存从模型中删除但尚未从数据库中删除的行。