如何限制mysql中删除的特定行

2admgd59  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(335)

我在用 jComboBox 从表中选择供应商,因此我创建了-1 id 表中“无”所选供应商的行。
-用户还看到了一行,我在其中获取了所有记录 jTable .
我不希望用户删除这一行可能是意外或有意识的。
我可以要这样的吗?
我正在使用mysql和java。

String comName = (String) jSupplrsComboBox.getSelectedItem();

            Suppliers suppliers = manager.searchSuppCompny(comName);
            if (comName.equals("none")) {
                receivings.getSuppliers().setId(-1);
                receivings.setSuppliers(suppliers);
            }
            receivings.setSuppliers(suppliers);

取来 SuppliersjComboBox 只需手动添加“无”文本,使其在中不匹配 Suppliers table。

nx7onnlm

nx7onnlm1#

我自己也试过了,在检索记录的时候我修改了代码:

DefaultTableModel suppliersModel = (DefaultTableModel) jSuppliersTable.getModel();
for(Suppliers suppliers : manager.allSuppliers()) {
    suppliersModel.addRow(new Object[]{suppliers.getId()});

    int id = (Integer) suppliersModel.getValueAt(0, 0);
    if(id == -1) {
        suppliersModel.removeRow(0);
    }

在第一行-1之后检索记录 id 在数据库表中。
塔恩克斯。

kyks70gy

kyks70gy2#

我不确定你到底想达到什么目的,但如果你利用 JComboBox ,我想您正在按组合框选择所指示的供应商筛选数据库。这也意味着组合框模型需要填充数据库中存在的条目。
这是一种将字符串从枚举设置到组合框的快速方法,从数据库传递条目也应该以类似的方式工作,但可能需要解决确保不存在重复的问题

jSupplrsComboBox.setModel(new DefaultComboBoxModel<>(SupplierId.values()));

从jcombobox中的链接java复选框来看,jonathanfeinberg的响应可能更适合于多个过滤器。
至于mysql,我假设您有权进行修改,最好添加一个额外的字段,比如isvalid,来指示所述条目是否有效。在这种情况下,你可以过滤 jSupplrsComboBox.getSelectedItem() 额外的 WHERE isValid = 1 . 但是你的问题更倾向于java而不是mysql,所以我就不多提了。查看mysql boolean question和相关链接了解更多关于这个问题的信息。

相关问题