Java 如何比较三个组合框并在文本框或标签中显示结果?

Java 如何比较三个组合框并在文本框或标签中显示结果?,java,mysql,swing,jdbc,combobox,Java,Mysql,Swing,Jdbc,Combobox,我正在建设高校库存管理系统项目。图为股票报告。 我有3个组合框和一个文本框来显示结果。问题是我不知道如何比较3个组合框和计算库存。例如,当我选择Model:FZ、cc:153和color:Red时,Total Stock中的结果应该可以显示在Total Stock文本框中 try { String searchmodel = cmbModelSearch.getSelectedItem().toString(); ps=DbConnection.cn.p

我正在建设高校库存管理系统项目。图为股票报告。 我有3个组合框和一个文本框来显示结果。问题是我不知道如何比较3个组合框和计算库存。例如,当我选择Model:FZ、cc:153和color:Red时,Total Stock中的结果应该可以显示在Total Stock文本框中

 try
    {
        String searchmodel = cmbModelSearch.getSelectedItem().toString();
        ps=DbConnection.cn.prepareStatement("SELECT COUNT(model)FROM stock WHERE model=?");
        ps.setString(1, searchmodel);
        ResultSet rs=ps.executeQuery();

        while(rs.next())
        {
            lblCountResult.setText(rs.getString("count(model)"));

        }
    }
    catch (Exception ex)
    {

    }

像这样的东西应该是好的:

当然,我不知道您的项目和数据库中的实际名称,所以我只是猜测而已

String model = cmbModelSearch.getSelectedItem().toString();
String cc = cmbCCSearch.getSelectedItem().toString();
String color = cmbColorSearch.getSelectedItem().toString();
ps=DbConnection.cn.prepareStatement("SELECT COUNT(Model) FROM stock WHERE model = ? AND Engine_Capacity = ? AND Color = ?");
ps.setString(1, model);
ps.setString(2, cc);
ps.setString(3, color);

您只需将组合框的选择映射到MySQL查询,我想这就是添加标记的原因

这相对简单。您只需要将actionListener添加到组合框中。每次有人在3个组合框中更改所选选项时,实际上,您将更改查询中要使用的字符串

假设您有3个字符串:

String model;
String cc;
String color;
每次有人更改3个组合框中的任何一个时,您都会将相应的字符串设置为新选择的选项。请注意,如果未选择这些字符串,如在屏幕截图中,则必须将字符串设置为null或空。我更喜欢空字符串,因为它们会让你从后面的几个NPE中解脱出来

既然已经根据所选选项设置了字符串,那么就必须基于该信息创建一个MySQL查询。这很简单-这是一个具有多个可能是一个条件的select查询

它将看起来像:

SELECT model, cc, color
FROM motorbikes
WHERE model=this.model AND cc=this.cc AND color=this.color;
但是在构建WHERE语句时必须灵活—如果字符串中的任何一个为null或空,则不能将其包含在查询中。这意味着上述查询的前两行将是您的基础-它们不会改变,我们将在这些基础上继续构建。要检查是否应包括任何条件(如果已从组合框中设置),可以执行以下操作:

boolean querySet = false;
String query = "SELECT model, cc, color FROM motorbikes ";
if(!model.isEmpty() || !cc.isEmpty() || !color.isEmpty()) {
    query.append("WHERE ");
    if(!model.isEmpty()) {
        query.append("model=" + this.model);
        querySet = true;
    }
    if(!cc.isEmpty()) {
        if(querySet){
            query.append("AND ");
        }
        query.append("cc=" + this.cc);
        querySet = true;
    }
    if(!color.isEmpty()) {
        if(querySet) {
            query.append("AND ");
        }
        query.append("color=" + this.color);
    }
}

在此之后,您只需发送/接收查询,就完成了。作为最后一步,您似乎只对该查询返回的摩托车数量感兴趣,或者您想添加一个额外的currentStorage>0

能否发布一些代码,以便我们了解您在做什么?我使用以下代码来计算biike的型号,例如Enciter:3。代码将计算诱惑摩托车的可用库存。但我需要它与CC和颜色进行比较,而不是在评论中。。。对你的文章进行编辑,这是非常不明确的。请不要在注释中显示代码,因为它会丢失格式,使其无法阅读。相反,请将其显示为对您的问题的编辑,并请显示更多内容。您询问的是JComboBox的使用情况,所以显示该代码是有意义的,不是吗?那么,您应该只向sql查询添加另外两个combobox值?这有什么困难?我会在数据库中添加更多的模型、cc、颜色,然后试试这个again@DipeshShrestha此查询基于猜测,您应该使用的查询是SELECT COUNTModel FROM stock,其中model=?发动机容量=?颜色=?谢谢你的代码,我在这里学到了一些知识,现在就来试试。这实际上是一个不好的选择。最好使用PreparedStatement可用的选项有限。他自己控制组合框中的标签。没有SQL注入的危险,因为用户不提供直接输入到查询中。尽管如此,如果您建议OP使用语句而不是PreparedStatement,您也应该在帖子中说明语句的缺点。