[英]sql WHERE clause not working properly
我是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);
对象hz = comboBox.getSelectedItem();
“ hz”是引用对象,此处不是字符串。 但是,在您的SQL中,您将其用作String对象(尝试连接)。
隐藏字符串=“从Threats_Hazards_Categories中选择SELECT Threat_Hazard_ID WHERE Hazard ='” + hz +“'”;
您需要使用字符串值“ hz”(选定的项目作为字符串),然后它应该可以正常工作。 另外,查看组合框中已插入的内容(字符串?)。 首先,您会在组合框中插入任何类型的对象。 如果不是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()+ "'";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.