我是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);
答案 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()+ "'";