Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中使用select语句和join表填充jComboBox_Java_Mysql_Sql_Select_Join - Fatal编程技术网

如何在Java中使用select语句和join表填充jComboBox

如何在Java中使用select语句和join表填充jComboBox,java,mysql,sql,select,join,Java,Mysql,Sql,Select,Join,各位 我有一个小任务要做,但我有点卡住了,基本上我在mySQL中有两个表,一个叫做“muscleGroup”和“muscleExercise”。第一个表本质上是不同练习的类别列表,包含两列“group_id”和“groupName”。然后我有了练习表,作为外键,我使用了“muscleGroup”表中的“group_id”列 我现在尝试做的是创建一个“muscleGroupComboBox”,其中包含“groupName”列的值,然后根据您选择的内容,我需要用属于此特定肌肉组的练习填充另一个com

各位

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

我现在尝试做的是创建一个“muscleGroupComboBox”,其中包含“groupName”列的值,然后根据您选择的内容,我需要用属于此特定肌肉组的练习填充另一个comboBox

下面是我填充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());
    }
}
这是我填充练习组合框的第二种方法

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的位置。。。请参见下面修改的
,其中
谓词

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

或者。。。(首选)

实际上,您应该使用准备好的语句并对组进行参数化,而不仅仅是将其添加到查询中。

我相信你漏掉了一个引号<代码>\”“+group…
应该是
“\”“+group…
不,不是这样。这与select语句的逻辑有关。无论如何,谢谢。是的,第二个解决方案按照我的预期工作,非常感谢;)
SELECT  muscleGroup.group_id, muscleGroup.groupName, muscleExercise.exerciseName 
FROM    muscleGroup
JOIN    muscleExercise USING(group_id)
WHERE   muscleGroup.groupName =\"" + group + "\"