Java 通过链接到数据库的id从jtable中多次删除记录

Java 通过链接到数据库的id从jtable中多次删除记录,java,database,swing,jtable,Java,Database,Swing,Jtable,我的问题:如何允许用户通过按钮从jtable执行多次删除。该表是 链接到我的数据库。我在另一个类中创建了一个表模型,并链接到我的SalesReceiptTable。 当用户单击delete按钮时,我可以从db和表中删除一行。 我应该为所选行执行循环吗 //Button to perform delete JButton btnDelete = new JButton("Delete"); btnDelete.setFont(new Font("Tahoma", Font.PLAI

我的问题:如何允许用户通过按钮从jtable执行多次删除。该表是
链接到我的数据库。我在另一个类中创建了一个表模型,并链接到我的SalesReceiptTable。 当用户单击delete按钮时,我可以从db和表中删除一行。 我应该为所选行执行循环吗

    //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;
}
//执行删除的按钮
JButton btnDelete=新JButton(“删除”);
setFont(新字体(“Tahoma”,Font.PLAIN,13));
btnDelete.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件e){
int rowSelected=SalesReceiptTable.getSelectedRow();
如果(选定行>=0)
{
String id=SalesReceiptTable.getValueAt(rowSelected,7).toString();
SalesReceipt1 e1=新的SalesReceipt1(Integer.parseInt(id));
e1.deleteSalesReceipt();
ArrayList结果=SalesReceipt1.RetrieveAllSalesReceipt1();
SalesReceiptTableModel=新的SalesReceiptTableModel(结果);
SalesReceiptable.setModel(模型);
}
否则{
JOptionPane.showMessageDialog(null,“未选择记录”,“警报”,JOptionPane.ERROR\u消息);
}
//实体类中的sql语句
公共布尔deleteSalesReceipt(){
布尔成功=假;
DBController db=新的DBController();
字符串数据库查询;
db.getConnection();
dbQuery=“从SalesReceipt中删除,其中salesReceiptId=”+salesReceiptId+”;
if(db.updateRequest(dbQuery)==1){
成功=真实;
}
db.terminate();
回归成功;
}

有几种可能的方法:

  • 如图所示,在表的
    setSelectionMode()
    方法中指定
    ListSelectionModel.MULTIPLE\u INTERVAL\u SELECTION
    ,并检查
    getSelectedRows()返回的结果

  • 如图所示,添加一列复选框,并仅在选择任何复选框时启用“删除”按钮

在所有情况下

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

  • 考虑使用
    列表
    来缓存从模型中删除但尚未从数据库中删除的行,以支持撤消


您能说明您尝试了什么以及哪里有问题吗?