Crie uma classe de testes que, além de testar os CRUDs, teste também os métodos maiorPopulacao, menorArea e vetorTresPaises

5 respostas
eclipsejavascriptjava
V

Olá, tenho o seguinte exercício para fazer, e minha classe PaisDAO (com os métodos CRUD) está dando erro nos métodos para maior populacao, menor area e vetor de três paises especialmente nas linhas setNome(rs.getString(“nome”)); e setArea(rs.getDouble(“area”));

Segue exercício e código:

Crie uma classe Pais com os atributos id (int), nome (String), populacao (long) e area (double).

  • c. Crie um construtor com os campos, um construtor padrão, gets e sets.
  • d. Crie os métodos do CRUD de Pais.
  • e. Crie um método que retorna o país com maior número de habitantes.
  • f. Crie um método que retorna o país com menor área.
  • g. Crie um método que retorne um vetor de 3 países.
  • h. Crei uma classe ConectionFactory.
  • i. Crie uma classe de testes que, além de testar os CRUDs, teste também os métodos maiorPopulacao, menorArea e vetorTresPaises
public String maiorPopulacao() {
		String sqlSelect = "SELECT * FROM pais WHERE populacao = (SELECT MAX(populacao) FROM pais)";

		try (Connection conn = obtemConexao(); PreparedStatement stm = conn.prepareStatement(sqlSelect);) {
			stm.setInt(1, getId());

			try (ResultSet rs = stm.executeQuery();) {
				if (rs.next()) {
					setNome(rs.getString("nome"));
					setPopulacao(rs.getLong("populacao"));
				} else {
					setId(-1);
					setNome(null);
					setPopulacao(-1);
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		} catch (SQLException e1) {
			System.out.print(e1.getStackTrace());
		}

		return sqlSelect;
	}

	public String menorArea() {
		String sqlSelect = "SELECT * FROM pais WHERE area = (SELECT MIN(area) FROM pais)";

		try (Connection conn = obtemConexao(); PreparedStatement stm = conn.prepareStatement(sqlSelect);) {
			stm.setInt(1, getId());
			try (ResultSet rs = stm.executeQuery();) {
				if (rs.next()) {
					setNome(rs.getString("nome"));
					setArea(rs.getDouble("area"));
				} else {
					setId(-1);
					setNome(null);
					setArea(-1);
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		} catch (SQLException e1) {
			System.out.print(e1.getStackTrace());
		}

		return sqlSelect;
	}

	public String VetorTresPaises() {
		String sqlSelect = "SELECT * FROM pais ORDER BY RAND() Limit 3";

		try (Connection conn = obtemConexao(); PreparedStatement stm = conn.prepareStatement(sqlSelect);) {
			stm.setInt(1, getId());
			try (ResultSet rs = stm.executeQuery();) {
				if (rs.next()) {
					setNome(rs.getString("nome"));
					setPopulacao(rs.getLong("populacao"));
					setArea(rs.getDouble("area"));
				} else {
					setId(-1);
					setNome(null);
					setPopulacao(-1);
					setArea(-1);
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		} catch (SQLException e1) {
			System.out.print(e1.getStackTrace());
		}

		return sqlSelect;
	}	
}

5 Respostas

J

Opa ! Teria como mostrar o erro, stackTrace, para a gente, daria uma ajuda

V

Opa, tem sim. Em todos os sets (setNome, setArea e o getId) ele pede para eu criar o método getId() por exemplo. Porém todos os gets e sets estão criados em outra classe “Pais”…

L

Que erro está acontecendo? Vc não falou.

V

Ele pede para eu criar o método, mas o mesmo já existe em outra classe. Exemplo aqui:

try (ResultSet rs = stm.executeQuery()<img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/w.pngink.png?v=9" title=":wink:" class="emoji" alt=":wink:"> {

if (rs.next()) {

setNome(rs.getString(“nome”));

setPopulacao(rs.getLong(“populacao”));

Ele fala no setNome setPopulacao para eu criar esses métodos

“The method setNome(String) is undefined for the type PaisDAO”

L

Se for sobre esse item, acho que deve ter sido escrito errado. Acho que o que vc deve fazer é “Criar uma CLASSE com os campos (nome e população), com um construtor e os métodos get e set para os campos (nome e população)”

Criado 19 de março de 2020
Ultima resposta 19 de mar. de 2020
Respostas 5
Participantes 3