我正在使用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
表中的文本不匹配。
答案 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
后检索记录。
火车。