Java 如何将项目添加到匹配的列表中?

Java 如何将项目添加到匹配的列表中?,java,Java,在处理每个国家/地区时,如何仅添加该国家/地区具有匹配国家/地区id的语言 private List<String> readCountryLanguages(Statement sqlStatement, List<Country>countries) throws SQLException { List<String> languages = new ArrayList<>(); for (Country country :

在处理每个国家/地区时,如何仅添加该国家/地区具有匹配国家/地区id的语言

  private List<String> readCountryLanguages(Statement sqlStatement, List<Country>countries) throws SQLException {
    List<String> languages = new ArrayList<>();
    for (Country country : countries )  {
    ResultSet resultSet = sqlStatement.executeQuery("SELECT language FROM COUNTRY_LANGUAGE");
     while (resultSet.next()) {
        String language = new String(resultSet.getString("Languages"));

        Country obj = new Country(0, language, 0, 0);
         obj.getId();
        }
    }
    return languages;
}
private List readCountryLanguages(语句sqlStatement,Listcountries)抛出SQLException{
列表语言=新的ArrayList();
适用于(国家:国家){
ResultSet ResultSet=sqlStatement.executeQuery(“从国家/地区选择语言”);
while(resultSet.next()){
字符串语言=新字符串(resultSet.getString(“语言”);
国家对象=新国家(0,语言,0,0);
obj.getId();
}
}
返回语言;
}

不确定COUNTRY_语言的表结构,但您可以将sql查询更新为类似的内容

SELECT language FROM COUNTRY_LANGUAGE WHERE country='" + country.getName()  + "'
在这里,我假设您的国家语言表中有一列“country”,可以通过调用
country.getName()
从country对象检索国家名称。但是您可以使用实际实现中的确切方法

  • 迭代时在变量中返回国家id;您应该有类似于
    country.getId()

  • ResultSet ResultSet=sqlStatement.executeQuery(“从国家/地区选择语言,其中id='countryIdVariable'”)

  • 将sql查询更改为参数化/准备语句,这样可以防止sql注入,并更容易地添加变量,而不必在sql字符串的单引号中写入变量


  • 正如Asura的menthion所说,首先更改sql查询,该查询返回contryId为“某物”的语言

    然后在while循环中,使用add()方法将每个语言添加到语言中,如下所示:

    while (resultSet.next()) {
        String language = resultSet.getString("Languages");
        // add to list 
        languages.add(language);
        }
    }