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