Java错误'从不使用本地'

时间:2015-05-08 04:38:31

标签: java

在这个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());
    }
                     }

}

1 个答案:

答案 0 :(得分:2)

根据您发布的代码,readCountryLanguages()方法永远不会在Country.java内调用。您的IDE会提醒您这一点,因为您通常不希望构建包含您未使用的代码的.class文件。

readCountryLanguages()方法似乎也是您从数据库中获取语言列表的位置。你可能想在某个时候调用这个方法,但忘了。