2015-05-05 3 views
0

Я смутился с этим if-else, потому что я новичок в Java & MySQL и я попытался сделать это самостоятельно.Значок радио кнопки показывает значения в поле со списком

public Menu() { 
     initComponents(); 
     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
      con = DriverManager.getConnection("jdbc:mysql://localhost:3306/restaurant", "root", ""); 
      System.out.println("ODBC Connection Successful"); 

      showCategory(); 

     } catch (ClassNotFoundException | SQLException e) { 
      System.out.println("ODBC Connection Failed" + e); 

     } 
    } 

если - еще

private void showCategory() { 
     try { 
      Statement stmt; 
      stmt = con.createStatement(); 

      if (rbMFood.isSelected()) { 
      ResultSet rs = stmt.executeQuery("SELECT * FROM menu_cat WHERE type_id = 'TY02'"); 
      while (rs.next()) { 
       cmbMCat.addItem(rs.getString("menu_cat")); 
      } 

     } else { 
      ResultSet rs = stmt.executeQuery("SELECT * FROM menu_cat WHERE type_id = 'TY01'"); 
      while (rs.next()) { 
       cmbMCat.addItem(rs.getString("menu_cat")); 
      } 

      } 
     } catch (Exception e) { 

     } 
    } 

Radio Button

private void rbMFoodActionPerformed(java.awt.event.ActionEvent evt) {           
     // TODO add your handling code here: 
     type = "Food"; 
    }          

    private void rbMDrinkActionPerformed(java.awt.event.ActionEvent evt) {           
     // TODO add your handling code here: 
     type = "Drink"; 
    } 

И я объявляю функцию в конце программы

private String type; 

Когда я нажимаю напитки/Продукты питания , категория категории все еще пьют.

enter image description here

База

enter image description here

Любая помощь будет принята с благодарностью!

+1

Ну, что отладочные действия имеют вы выступали? –

+1

'type_id = TYO2' должен быть' type_id = 'TYO2'', а для другого. –

+0

Вы можете разместить свое определение таблицы, пожалуйста? похоже, что у вас есть столбец «menu_cat» внутри вашей таблицы «menu_cat», по крайней мере, вы пытаетесь получить доступ к значению этого столбца –

ответ

0

Вы используете rs.getString("menu_cat") Но формат rs.getString(<Column Name>) Но вы используете rs.getString(<Table Name>) Поскольку «menu_cat» - это имя таблицы, а не название столбца.

после вывешивать КОНСТРУКТОР

Что я вижу из кода вы в курсе, что вы назвали в конструкторе showCategory(). Этот метод отвечает за заполнение JComboBoxcmbMCat. Теперь cmbMCat заполняется, когда вы создаете новый Menu. После этого список товаров cmbMCat не изменяется.

Итак, я предлагаю вам позвонить showCategory() из методов rbMFoodActionPerformed и rbMDrinkActionPerformed. Надеюсь, это решит вашу проблему.

Также добавьте cmbMCat.removeAllItems() до Statement stmt;, чтобы удалить все предметы, которые есть в cmbMCat, и сбросить его с помощью нового списка предметов.

После комментариев по поводу если-то еще

Измените showCatagory(), как показано ниже:

private void showCategory() { 
     cmbMCat.removeAllItems(); 
     try { 
      PreparedStatement stmt; //Used Prepared statement 
      String sql = "SELECT * FROM menu_cat WHERE type_id = ?"; 
      stmt = con.prepareStatement(sql); 

      if (type.equals("Drink")) { 
       stmt.setString("TY01");  
      } else { 
       stmt.setString("TY02"); 
      } 
       ResultSet rs = stmt.executeQuery(); 
       while (rs.next()) { 
        cmbMCat.addItem(rs.getString("menu_cat")); 
       } 

      } 
     } catch (Exception e) { 

     } 
    } 

Также обратите внимание, что вы eventListener код должен быть:

private void rbMFoodActionPerformed(java.awt.event.ActionEvent evt){           
    type = "Food"; 
    showCategory(); 
}          

private void rbMDrinkActionPerformed(java.awt.event.ActionEvent evt){           
    type = "Drink"; 
    showCategory(); 
} 
+0

wait. Имя моей колонки и таблицы одинаково. Извините, что вы смутили>< – enjeru

+0

, не могли бы вы разместить свои имена столбцов? Также лучшим ответом будет 'SELECT menu_cat FROM menu_cat WHERE type_id = 'TYO2'' – Blip

+0

Ah. Итак, 'showCategory()' в конструкторе я его удаляю? – enjeru

Смежные вопросы