gpt4 book ai didi

java - 如何在 Java 中使用 select 语句和连接表填充 jComboBox

转载 作者:行者123 更新时间:2023-11-30 00:27:03 27 4
gpt4 key购买 nike

大家。

我有一项小任务要做,但我有点卡住了,基本上我在 mySQL 中有两个表,一个名为“muscleGroup”和“muscleExercise”。第一个表本质上是不同练习的类别列表,包含两列“group_id”和“groupName”。比我有练习表,并且我使用“muscleGroup”表中的“group_id”列作为外键。

我现在尝试做的是拥有一个“muscleGroupComboBox”,其中包含“groupName”列的值,并且根据您选择的内容,我需要使用属于该特定组的练习填充另一个组合框肌肉。

这是我填充muscleGroup组合框的方法。

private void populateMuscleGroupComboBox() {
String comboBoxQuery = "SELECT groupName FROM musclegroup";
ResultSet rs;
PreparedStatement statement;
try {
statement = con.prepareStatement(comboBoxQuery);
rs = statement.executeQuery();
while (rs.next()) {
String groupName = rs.getString("groupName");
groupComboBox1.addItem(groupName);
groupComboBox2.addItem(groupName);
groupComboBox3.addItem(groupName);
groupComboBox4.addItem(groupName);
groupComboBox5.addItem(groupName);
groupComboBox6.addItem(groupName);

}
} catch (SQLException ex) {
System.out.println(ex.toString());
}
}

这是我填充练习 ComboBox 的第二种方法。

private void populateExerciseComboBox(String group) {
String comboBoxQuery = "SELECT muscleGroup.group_id, muscleGroup.groupName, muscleExercise.exerciseName FROM muscleGroup,muscleExercise WHERE muscleGroup.groupName =\"" + group + "\"";
ResultSet rs;
PreparedStatement statement;
try {
statement = con.prepareStatement(comboBoxQuery);
rs = statement.executeQuery();
while (rs.next()) {
String exerciseName = rs.getString("muscleExercise.exerciseName");
jComboBox7.addItem(exerciseName);

}
} catch (SQLException ex) {
System.out.println(ex.toString());
}
}

这里我调用方法

    populateMuscleGroupComboBox();
populateExerciseComboBox(groupComboBox1.getSelectedItem().toString());

现在可以进行这种工作,但我的 Select 语句有问题,因为它返回练习表中的所有练习,我知道它与 WHERE 子句有关,但我不确定如何使其工作。

   "SELECT muscleGroup.group_id, muscleGroup.groupName, muscleExercise.exerciseName FROM    muscleGroup,muscleExercise WHERE muscleGroup.groupName =\"" + group + "\"";

如有帮助,我们将不胜感激

最佳答案

您没有限制muscleExercise 和muscleGroup 是同一组I​​D...请参阅下面修改后的WHERE 谓词。

“从muscleGroup、muscleExercise中选择muscleGroup.group_id、muscleGroup.groupName、muscleExercise.exerciseName,其中muscleGroup.groupName =\””+ group +“\”和muscleExercise.group_id =muscleGroup.group_id”;

或者...(首选)

SELECT  muscleGroup.group_id, muscleGroup.groupName, muscleExercise.exerciseName 
FROM muscleGroup
JOIN muscleExercise USING(group_id)
WHERE muscleGroup.groupName =\"" + group + "\"

实际上,您应该使用准备好的语句并参数化组,而不是仅仅将其添加到查询中。 How does Java's PreparedStatement work?

关于java - 如何在 Java 中使用 select 语句和连接表填充 jComboBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22792711/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com