如何限制在MySQL中删除的特定行

时间:2018-12-31 09:45:33

标签: java mysql

我正在使用jComboBox从表中选择一个供应商,因此我在表中为“无”选定的供应商创建了-1 id行。

-1行也出现在用户我提取了所有记录的位置    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);  

Suppliers提取到jComboBox,并且只是手动添加了“无”文本,因此与Suppliers表中的文本不匹配。

2 个答案:

答案 0 :(得分:0)

我不确定您要实现的目标是什么,但是如果您使用的是JComboBox,我想您正在按照comboBox选择所指示的供应商来过滤数据库。这也意味着需要用数据库中存在的条目填充您的comboBox模型。

这是从枚举中将字符串设置为ComboBox的快速方法,从数据库传递条目的方式应类似,但是可能需要解决不存在重复的问题

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

通过链接Java - Check Boxes in a JComboBox,乔纳森·芬伯格的回应可能更适合于多个过滤器。

对于MYSQL,我假设您有权进行修改,最好添加一个额外的字段,例如isValid,以指示该条目是否有效。在这种情况下,您可以使用另外的jSupplrsComboBox.getSelectedItem()WHERE isValid = 1进行过滤。 但是您的问题更多是针对Java,而不是MYSQL,因此,我将不多提及。请查看MySQL Boolean Question和相关链接以获取更多信息。

答案 1 :(得分:0)

好吧,我尝试了一下,并在更改代码的位置检索记录:

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后检索记录。
火车。