在这个java项目中,我遇到的问题是显示我从数据库中提取并存储在ArrayList中的语言,以便在readCountry类中读取。我的问题为什么它不显示语言,为什么它告诉我我的readCountryLanguages方法不在本地使用?
import java.util.ArrayList;
import java.util.List;
public class Country {
private int id;
private String name;
private long population;
private double medianAge;
private List<String> languages;
/**
* Country Class
*/
public Country(int id, String name, long population, double medianAge) {
this.id = id;
this.name = name;
this.population = population;
this.medianAge = medianAge;
this.languages = new ArrayList<>();
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public long getPopulation() {
return population;
}
public double getMedianAge() {
return medianAge;
}
public void addLanguage (String language) {
languages.add(language);
}
public List<String> getLanguages() {
return languages;
}
}
public class ReadCountryDB {
private static final String DB_NAME = "Countries";
private static final String
private static final String COUNTRY_TABLE_NAME = "COUNTRY";
private static final String USERNAME = "2bjExample";
private static final String PASSWORD = "tnedutsh332";
private List<Country> countries;
public ReadCountryDB() {
Connection connection = null;
Statement sqlStatement = null;
try {
connection = DriverManager.getConnection(DB_URL, USERNAME, PASSWORD);
sqlStatement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
countries = readCountries(sqlStatement);
} catch (SQLException e) {
System.err.println("ERROR: " + e.getMessage());
e.printStackTrace();
} finally {
close(sqlStatement);
close(connection);
}
}
private List<Country> readCountries(Statement sqlStatement) throws SQLException {
List<Country> countries = new ArrayList<Country>();
ResultSet resultSet = sqlStatement.executeQuery("SELECT * FROM " + COUNTRY_TABLE_NAME);
while (resultSet.next()) {
countries.add(new Country(resultSet.getInt("Id"),
resultSet.getString("Name"),
resultSet.getLong("Population"),
resultSet.getDouble("MedianAge")));
}
return countries;
}
private List<String>readCountryLanguages(Statement sqlStatement) throws SQLException {
List<String> languages = new ArrayList<>();
ResultSet resultSet = sqlStatement.executeQuery("SELECT language FROM COUNTRY_LANGUAGE");
while (resultSet.next()) {
languages.add(new String(resultSet.getString("CountryID")));
}
return languages;
}
/**
*
* @param sqlStatement
*/
private void close(Statement sqlStatement) {
if (sqlStatement != null) {
try {
sqlStatement.close();
} catch (SQLException e) {
}
}
}
/**
*
* @param connection
*/
private void close(Connection connection) {
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
}
}
}
/**
* @return list of countries read from the country database
*/
public List<Country> getCountries() {
return countries;
}
}
import java.util.List;
/**
* CountryMain class
*/
public class CountryMain {
public static void main(String[] args) {
ReadCountryDB rcdb = new ReadCountryDB();
List<Country> countries = rcdb.getCountries();
for (Country firstCountry : countries) {
System.out.println("First country:");
System.out.println("Name: " + firstCountry.getName()
+ " Population: " + firstCountry.getPopulation()
+ " Language: " + firstCountry.getLanguages()
+ " Median Age: " + firstCountry.getMedianAge());
}
}
}
答案 0 :(得分:2)
根据您发布的代码,readCountryLanguages()
方法永远不会在Country.java
内调用。您的IDE会提醒您这一点,因为您通常不希望构建包含您未使用的代码的.class
文件。
readCountryLanguages()
方法似乎也是您从数据库中获取语言列表的位置。你可能想在某个时候调用这个方法,但忘了。