大家。
我有一个小任务要做,但是有点卡住了,基本上我在MySQL中有两个表,一个叫“ muscleGroup”和“ muscleExercise”。第一张表本质上是不同练习的类别列表,其中包含两列“ group_id”和“ groupName”。比起练习表,我使用了“ muscleGroup”表中的“ group_id”列作为外键。
我现在想做的是拥有一个“ muscleGroupComboBox”,其中包含“ groupName”列的值,然后根据您所选择的内容,我需要用属于该特定肌肉群的练习来填充另一个comboBox。
这是我的方法来填充muscleGroup comboBox。
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是同一组ID的位置...请参见下面的修订的WHERE
谓词。"SELECT muscleGroup.group_id, muscleGroup.groupName, muscleExercise.exerciseName FROM muscleGroup,muscleExercise WHERE muscleGroup.groupName =\"" + group + "\" and 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?