单选按钮在组合框中显示值
radio button show values in combo box
我对这个 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) {
}
}
单选按钮
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;
当我点击饮料/食品时,类别仍然是饮料的类别。
数据库
如有任何帮助,我们将不胜感激!
您使用的是 rs.getString("menu_cat")
但格式是 rs.getString(<Column Name>)
但是您使用的是 rs.getString(<Table Name>)
因为 "menu_cat" 是 table 的名称而不是名称列的。
发布构造函数后
我从您发布的代码中看到的是,您在构造函数中调用了 showCategory()
。此方法负责填充 JComboBox
cmbMCat
。现在,当您创建新的 Menu
时,会填充 cmbMCat
。之后 cmbMCat
的项目列表不会改变。
所以,我建议您从 rbMFoodActionPerformed
和 rbMDrinkActionPerformed
方法中调用 showCategory()
。我希望这能解决你的问题。
还在 Statement stmt;
之前添加 cmbMCat.removeAllItems()
以删除 cmbMCat
中的所有项目,并用新的项目列表重置它。
关于 if-else
的评论之后
改变 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();
}
我对这个 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) {
}
}
单选按钮
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;
当我点击饮料/食品时,类别仍然是饮料的类别。
数据库
如有任何帮助,我们将不胜感激!
您使用的是 rs.getString("menu_cat")
但格式是 rs.getString(<Column Name>)
但是您使用的是 rs.getString(<Table Name>)
因为 "menu_cat" 是 table 的名称而不是名称列的。
发布构造函数后
我从您发布的代码中看到的是,您在构造函数中调用了 showCategory()
。此方法负责填充 JComboBox
cmbMCat
。现在,当您创建新的 Menu
时,会填充 cmbMCat
。之后 cmbMCat
的项目列表不会改变。
所以,我建议您从 rbMFoodActionPerformed
和 rbMDrinkActionPerformed
方法中调用 showCategory()
。我希望这能解决你的问题。
还在 Statement stmt;
之前添加 cmbMCat.removeAllItems()
以删除 cmbMCat
中的所有项目,并用新的项目列表重置它。
关于 if-else
的评论之后改变 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();
}