大家。

我有一个小任务要做,但是有点卡住了,基本上我在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是同一组I​​D的位置...请参见下面的修订的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?

10-02 23:58