Convertendo Data

Ao necessitar implementar uma lista dos dados do banco estou me deparando com um erro no método getLista()


	public List<Contato> getLista() {

		try {

			PreparedStatement stmt = this.conn
					.prepareStatement("select * from contatos");
			ResultSet rs = stmt.executeQuery();

			List<Contato> contatos = new ArrayList<Contato>();

			while (rs.next()) {
				// criando o objeto contato
				Contato contato = new Contato();
				contato.setNome(rs.getString("nome"));
				contato.setEmail(rs.getString("email"));
				contato.setEndereco(rs.getString("endereco"));
		[color=red]contato.setDataFormatada(rs.getDate("dataNascimento")); [/color]

				contatos.add(contato);
			}

			rs.close();
			stmt.close();

			return contatos;

		} catch (Exception e) {
			throw new DaoException(e);
		}

	}

Convertendo a data pelo DTO:


	public Date setDataFormatada(String dataNascimento){
		try {
			SimpleDateFormat formatado = new SimpleDateFormat("yyyy-MM-dd");
			Date dataFormat = formatado.parse(dataNascimento);
			return dataFormat;
			
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return null;
	}

	
	public void setDataNascimento(String dataNascimento) {
		this.dataNascimento = setDataFormatada(dataNascimento);
	}

Qual a porra do erro?

Por que sua data é String e não Date? não seria mais fácil evitar essas conversões?

O erro esta no método getLista()

		while (rs.next()) {
			// criando o objeto contato
			Contato contato = new Contato();
			contato.setNome(rs.getString("nome"));
			contato.setEmail(rs.getString("email"));
			contato.setEndereco(rs.getString("endereco"));
			[color=red] [/color]contato.setDataFormatada(rs.getDate("dataNascimento"));

			contatos.add(contato);
		}

[quote=bsvieira]O erro esta no método getLista()

		while (rs.next()) {
			// criando o objeto contato
			Contato contato = new Contato();
			contato.setNome(rs.getString("nome"));
			contato.setEmail(rs.getString("email"));
			contato.setEndereco(rs.getString("endereco"));
			[color=red] [/color]contato.setDataFormatada(rs.getDate("dataNascimento"));

			contatos.add(contato);
		}[/quote]

Você ainda não falou qual o erro, amigão…

Que isso machado? Calma cara, se este tópico te irritou a este ponto, nem comenta. Relaxa :slight_smile:

E o seu erro é nessa linha:

[color=red]contato.setDataFormatada(rs.getDate("dataNascimento")); [/color] ?

Pela tag color deve ser né. Não esquece que o:

rs.getDate();

Vai lhe retornar um java.sql.Date e não uma String ou java.util.Date. Seu método setDataFormatada recebe uma String e não um objeto Date.
Tu teria de fazer algo como:

String dataFormatada = new SimpleDateFormat("dd/MM/yyyy").format(new java.util.Date(rs.getDate("dataNascimento")));
contato.setDataFormatada(dataFormatada);

Algo do tipo.

A data esta vindo do banco como Date.

[quote=bsvieira]O erro esta no método getLista()

		while (rs.next()) {
			// criando o objeto contato
			Contato contato = new Contato();
			contato.setNome(rs.getString("nome"));
			contato.setEmail(rs.getString("email"));
			contato.setEndereco(rs.getString("endereco"));
			[color=red] [/color]contato.setDataFormatada(rs.getDate("dataNascimento"));

			contatos.add(contato);
		}[/quote]

Discordo.
O erro não está no método, nem no código, nem em nada além do sujeito que abriu o tópico.
Se não sabe fazer, você tem duas escolhas:
1 - Estudar, seguir corretamente as instruções de livros/apostilas e aprender.
2 - Pagar para alguém fazer.

Portanto, se você é incapaz de realizar a primeira (por que, ao meu ver, quem interpreta a pergunta “qual é o erro?” como “onde está o erro?” é incapaz), pode ir pensando em gastar uns dinheiros.

Que isso machado? Calma cara, se este tópico te irritou a este ponto, nem comenta. Relaxa :slight_smile:

E o seu erro é nessa linha:

[color=red]contato.setDataFormatada(rs.getDate("dataNascimento")); [/color] ?

Pela tag color deve ser né. Não esquece que o:

rs.getDate();

Vai lhe retornar um java.sql.Date e não uma String ou java.util.Date. Seu método setDataFormatada recebe uma String e não um objeto Date.
Tu teria de fazer algo como:

String dataFormatada = new SimpleDateFormat("dd/MM/yyyy").format(new java.util.Date(rs.getDate("dataNascimento")));
contato.setDataFormatada(dataFormatada);

Algo do tipo.[/quote]

  • O autor do tópico não fez nenhuma questão de pesquisar
  • O autor do tópico não disse qual o erro
  • O autor do tópico não foi claro em seu tópico
  • O autor do tópico pensa que somos obrigados a adivinhar o que ele quis dizer, o que quer fazer e de que forma quer que isto funcione.

Leia isto
e isto

Eu sei, eu sei. Mas te acalma.
Diz ai para mim agora, está assim porque está trabalhando com Struts né? Pode falar rsrs…

Porque só de ter lido que tu trabalha com isso…me arrepia rs.

[quote=nel]Eu sei, eu sei. Mas te acalma.
Diz ai para mim agora, está assim porque está trabalhando com Struts né? Pode falar rsrs…

Porque só de ter lido que tu trabalha com isso…me arrepia rs.[/quote]
Emprego número 1:
Manutenção em um sistema de pós faturamento, todo feito em Struts 1, com persistência em Hibernate e, sem nada de ajax.

[quote=drsmachado][quote=nel]Eu sei, eu sei. Mas te acalma.
Diz ai para mim agora, está assim porque está trabalhando com Struts né? Pode falar rsrs…

Porque só de ter lido que tu trabalha com isso…me arrepia rs.[/quote]
Emprego número 1:
Manutenção em um sistema de pós faturamento, todo feito em Struts 1, com persistência em Hibernate e, sem nada de ajax.[/quote]

Exatamente igual eu :slight_smile:
Servlet puro. Cada novo atributo na classe eu alterava N XML´s para conseguir capturar no lado servidor a informação, era uma maravilha.
Só que eu trabalhei com JDBC e depois hibernate. Ai foi começando a melhorar, usando JSF, primefaces, richfaces, icefaces e atualmente, JS puro, jQuery e coisaradas.
Sei como é o famoso Struts, mas trabalhas com ele ainda?

Ops…não quero fugir ao tópico também.

Trabalho com struts mesmo, usando o struts-config.xml e os layouts são gerenciados pelo tiles (então, tem um monte de tiles-definitions.xml).