sql WHERE子句无法正常工作

时间:2016-02-16 03:25:28

标签: java sql sqlite where-clause clause

我是Java和sql的新手。我写了一个where子句但它似乎没有正常工作。

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

基于之前的comboBox“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);

2 个答案:

答案 0 :(得分:0)

Object hz = comboBox.getSelectedItem();

"赫兹"这里是一个引用对象而不是String。但是在SQL中,您将它用作String对象(尝试连接)。

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

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

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

但这一切都取决于首先插入组合框的项目。

答案 1 :(得分:0)

更改此

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()+ "'";