2016-02-16 1 views
0

Je suis nouveau sur Java et SQL. J'ai écrit une clause where mais cela ne semble pas fonctionner correctement.sql Clause WHERE ne fonctionne pas correctement

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

basé sur une sélection dans un comboBox « hz » précédent, je veux tirer l'ID que je lui ai donné. Pourtant, il semble juste rejeter la sélection qui a été faite.

Voici la section de code que j'ai écrit, remplissez gratuitement pour offrir de meilleures méthodes d'effectuer cette tâche.

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

chaîne de remplacement obj = comboBox.getSelectedItem() toString(). –

+0

Et Hazard = '"+ hz +"'; –

Répondre

0

Modifier cette

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

Pour

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

wow c'était simple, merci pour l'aide. Je ne sais pas pourquoi je n'y avais pas pensé avant. –

0

Objet hz = comboBox.getSelectedItem();

"hz" est un objet de référence ici pas une chaîne. Cependant, dans votre SQL, vous l'utilisez comme un objet String (en essayant de concaténer). String Hid = "SELECT Threat_Hazard_ID FROM Threats_Hazards_Categories WHERE Hazard = '" + hz + "'";

Vous devez utiliser la valeur String de "hz" (élément sélectionné en tant que chaîne), puis cela devrait fonctionner, j'espère. En outre, regardez dans ce qui a été inséré dans la liste déroulante (une chaîne?). Vous obtiendrez Quel que soit le type d'un objet a été inséré dans le Combobox à la première place. Si ce n'est pas une chaîne, vous devez d'abord obtenir la valeur de chaîne à partir des éléments insérés. Vous pouvez essayer ceci:

Chaîne hz = (Chaîne) comboBox.getSelectedItem();

Mais tout dépend des éléments insérés dans la zone de liste déroulante en premier lieu.