sql WHERE 子句无法正常工作

sql WHERE clause not working properly

我是 Java 和 sql 的新手。我已经写了一个 where 子句,但是它似乎不能正常工作。

"SELECT Threat_Hazard_ID FROM Threats_Hazards_Categories WHERE Hazard = '" + hz + "'";

根据之前组合框 "hz" 中的选择,我想提取我给它的 ID。然而,它似乎只是反击了所做的选择。

这是我编写的代码部分,请随意填写以提供更好的方法来执行此任务。

comboBox.addItemListener(new ItemListener() {
    @Override
    public void itemStateChanged(ItemEvent arg0) {
        try {
            Object hz = comboBox.getSelectedItem();
            System.out.println(hz);
            c = DriverManager.getConnection("jdbc:sqlite:MAAWB.db");
            stmt = c.createStatement();
            String Hid = "SELECT Threat_Hazard_ID FROM Threats_Hazards_Categories WHERE Hazard = '" + hz + "'";
            hidtest = stmt.executeQuery(Hid);
            int test = hidtest.getInt("Threat_Hazzard_ID");
            String hazardCP = "SELECT HazardCP FROM Hazard_CP WHERE Threat_Hazard_Id = " + Hid;
            if(radioButton.isSelected() != false) {
                while(hcp.next()){
                    Hcp = hcp.getString("HazardCP");
                    comboBox_1.removeItem(Tcp);
                    comboBox_1.addItem(Hcp);

对象 hz = comboBox.getSelectedItem();

"hz" 在这里是引用对象而不是字符串。但是,在您的 SQL 中,您将其用作 String 对象(尝试连接)。

字符串隐藏 = "SELECT Threat_Hazard_ID FROM Threats_Hazards_Categories WHERE Hazard = '" + hz + "'";

您需要使用 "hz" 的字符串值(所选项目作为字符串),我希望它应该可以工作。另外,查看组合框中插入的内容(字符串?)。您将首先获得已在组合框中插入的任何类型的对象。如果它不是 String,那么您需要先从插入的项目中获取 String 值。你可以试试这个:

String hz = (String) comboBox.getSelectedItem();

但这完全取决于首先插入组合框的项目。

改变这个

String Hid = "SELECT Threat_Hazard_ID FROM Threats_Hazards_Categories WHERE Hazard = '" + hz + "'";

String Hid = "SELECT           Threat_Hazard_ID FROM Threats_Hazards_Categories WHERE Hazard = '" + hz.toString()+ "'";