Dificuldade para inserir uma data no banco de dados Oracle 10g Express

1 resposta
S

Pessoal, estou com a seguinte dificuldade.

Tenho um formulário onde possuo o campo nome, email, endereço e data.
Na minha servleteu pego esses valores, crio meu obj Contato e um objeto ContatoDAO para persistir no banco.
Acontece que estou com problema na conversão da String data para Date e para Calendar.
Ele entra no catch ParseException da classe adicionaContaServlet.

adicionaContatoServlet
protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// Preparando o response
		PrintWriter out = response.getWriter();
		// Pegando os valores vindo do formulário
		String nome = request.getParameter("nome");
		String email = request.getParameter("email");
		String endereco = request.getParameter("endereco");
		String dtNascimento = request.getParameter("dtNascimento");		
		Calendar dataNascimento = null;
		
		// Fazendo a conversão da Data
		try{
			Date date = new SimpleDateFormat("dd/MM/yyyy").parse(dtNascimento);
			dataNascimento = Calendar.getInstance();
			dataNascimento.setTime(date);
		}
		catch(ParseException e){
			out.println("Erro de conversao");
			return; // para a execução do método
		}
		
		// Montando um objeto contato
		Contato contato = new Contato();
		contato.setNome(nome);
		contato.setEmail(email);
		contato.setEndereco(endereco);
		contato.setData(dataNascimento);

		// Salvando o contato no banco
		ContatoDAO dao = new ContatoDAO();
		dao.adicionaContato(contato);		
	}
}
ContatoDAO
public void adicionaContato(Contato contato){
		
		String sql = "inset into contatos (id, nome, email, endereco, dataNascimento) values (cont_seq, ?, ?, ?, ?)";
		try{
			this.pstmt = this.con.prepareStatement(sql);
			
			this.pstmt.setString(1, contato.getNome());
			this.pstmt.setString(2, contato.getEmail());
			this.pstmt.setString(3, contato.getEndereco());
			this.pstmt.setDate(4, new java.sql.Date(Calendar.getInstance().getTimeInMillis()));
			this.pstmt.execute();
			this.pstmt.close();
		}
		catch(SQLException e){
			e.printStackTrace();
		}
	}

1 Resposta

wbdsjunior

ante de fazer o parse você deve garantir que recebeu uma data válida e no formato passado como pattern para o SimpleDateFormat.

isso também quer dizer que data não pode ser nula ou em branco.

Criado 25 de janeiro de 2011
Ultima resposta 25 de jan. de 2011
Respostas 1
Participantes 2