Calendar

12 respostas
R

Pessoal com eu faço para set um valor do tipo CALENDAR no DAO
estou fazendo assim mais esta errado pesquisei no fórum mais não achei nada que ajudasse usando CALENDAR

pstm.setCalendar(1, filmesTO.getAno());
pstm.setCalendar(2, filmesTO.getDatacompra());
pstm.setCalendar(3, filmesTO.getDatacadastro());

12 Respostas

xandevieira

assim não rola?

public Calendar calendar(int year, int month, int date){ Calendar c1 = Calendar.getInstance(); c1.set(year, month, date); return c1; }

R

Olha só como esta todo meu metodo

public void cadastraFilmes(FilmesTO filmesTO) throws Exception {
		
	 Connection c = ConectarBD.getConnection();
	 Calendar calendar = Calendar.getInstance();
	 		
		try {
			
			PreparedStatement pstm = c.prepareStatement("INSERT INTO CADCLIENTE (titulo, subtitulo, codigo, Genero, duracao, produtora, " +
					"pais, midia, ano, condicao, estado, legenda, idioma, distribuidora, datacompra, datacadastro) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
			pstm.setString(1, filmesTO.getTitulo());
			pstm.setString(2, filmesTO.getSubtitulo());
			pstm.setString(3, filmesTO.getCodigo());
			pstm.setString(4, filmesTO.getGenero());
			pstm.setString(5, filmesTO.getDuracao());
			pstm.setString(6, filmesTO.getProdutora());
			pstm.setString(7, filmesTO.getPais());
			pstm.setString(8, filmesTO.getMidia());
			pstm.setCalendar(9, filmesTO.getAno()); <-----
			pstm.setString(10, filmesTO.getCondicao());
			pstm.setString(11, filmesTO.getEstado());
			pstm.setString(12, filmesTO.getLegenda());
			pstm.setString(13, filmesTO.getIdioma());
			pstm.setString(14, filmesTO.getDistribuidora());
			pstm.setCalendar(15, (Calendar) filmesTO.getDatacompra());   <-----
			pstm.setCalendar(16, (Calendar) filmesTO.getDatacadastro());  <-----
			pstm.execute();
		} catch (Exception ex) {
			System.out.println("Erro: " + ex);
			throw new Exception(ex);
		}
	}
}
xandevieira

o ano vc definiu como Calendar tb?

xandevieira

nos demais vc pode usar assim:

pstm.setCalendar(15, calendar.setTime(filmesTO.getDatacompra()));
R

Respondendo sua pergunta anterior as datas que estou trabalhando nesse metodo são todas do tipo Calendar
Alterei e esta assim mais esta dando erro no setCalendar, setTime

public void cadastraFilmes(FilmesTO filmesTO) throws Exception {
		
	 Connection c = ConectarBD.getConnection();
	 Calendar calendar = Calendar.getInstance();
	 		
		try {
			
			PreparedStatement pstm = c.prepareStatement("INSERT INTO CADCLIENTE (titulo, subtitulo, codigo, Genero, duracao, produtora, " +
					"pais, midia, ano, condicao, estado, legenda, idioma, distribuidora, datacompra, datacadastro) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
			pstm.setString(1, filmesTO.getTitulo());
			pstm.setString(2, filmesTO.getSubtitulo());
			pstm.setString(3, filmesTO.getCodigo());
			pstm.setString(4, filmesTO.getGenero());
			pstm.setString(5, filmesTO.getDuracao());
			pstm.setString(6, filmesTO.getProdutora());
			pstm.setString(7, filmesTO.getPais());
			pstm.setString(8, filmesTO.getMidia());
			pstm.setCalendar(9, calendar.setTime(filmesTO.getAno())); <-----
			pstm.setString(10, filmesTO.getCondicao());
			pstm.setString(11, filmesTO.getEstado());
			pstm.setString(12, filmesTO.getLegenda());
			pstm.setString(13, filmesTO.getIdioma());
			pstm.setString(14, filmesTO.getDistribuidora());
			pstm.setCalendar(15, calendar.setTime(filmesTO.getDatacompra()));   <-----
			pstm.setCalendar(16, calendar.setTime(filmesTO.getDatacadastro()));  <-----
			pstm.execute();
		} catch (Exception ex) {
			ex.printStackTrace();
			System.out.println("Erro: " + ex);
			throw new Exception(ex);
		}
	}
}
xandevieira

entao pq vc fez cast??
se ja eh do tipo calendar nao vai precisar fazer o set.

ocorre algum erro ao dar o insert?
ja tentou inserir colocando filmesTO.getAno().getTime()?

independente o tipo, Date ou Calendar ja funcionou pra mim, utilizo firebird.

loganwlogan

Prezado Colega,

Qual tipo da coluna que recebe os valores de data? Quando faço isso eu coloco tipo DATE no banco, e na hora de usar preparedStatment vc precisa converter para java.sql.DATE.
Lembre-se que para gravar data no banco vc precisa de um objeto sql.DATE

Espero ter ajudado

Sds

Logan

R

Todos meus atributos esta do tipo Calendar e no banco esta do tipo DATE
com o Date até sei como trabalhar mais estou tendo problema para usar Calendar

alguém pode me ajudar ?

xandevieira

se vc nao tinha problema com tipo Date usa assim filmesTO.getAno().getTime().
o getTime eh do tipo Date, e continue como sempre fez.

O

Uma dúvida: que PreparedStatement é esse que trabalha com Calendar e tem o método setCalendar???
Se você mapeou a data no seu VO FilmesTO como Calendar, vai ter que ficar fazendo casts.

Na hora de settar o Statement faça assim:

Date data = (Date) filmesTO.getDatacompra().getTime(); pstm.setCalendar(15, data);
sendo que data é um java.sql.Date e não java.util.Date

Para recuperar de um ResultSet:

filmesTO.setDatacompra(Calendar.getInstance()); filmesTO.getDatacompra().setTime(rs.getDate(15));

Tá meio POG, mas acho que deu pra entender…

loganwlogan

O comentário do Ozix é praticamente o mesmo que eu fiz, acho que o problema é que o amigo ta querendo dar um setCalendar no prst, e eu não conheço esse método e nem o tipo de dado que deve estar no banco para receber esse tipo de dado. Por isso comentei sobre o java.sql.Date

Sds

Logan

Ps a classe Calendar tem um método chamado getDate se não me engano, esse pode ser o paramêtro usado no banco, devida mente convertido para sql.Date

R

Galera resolvido meu problema irei postar aqui para outras duvidas que surgirem

public void cadastraFilmes(FilmesTO filmesTO) throws Exception {
		
	 Connection c = ConectarBD.getConnection();
	 Calendar calendar = Calendar.getInstance();
	 		
		try {
			
			PreparedStatement pstm = c.prepareStatement("INSERT INTO CADCLIENTE (titulo, subtitulo, codigo, Genero, duracao, produtora, " +
					"pais, midia, ano, condicao, estado, legenda, idioma, distribuidora, datacompra, datacadastro) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
			pstm.setString(1, filmesTO.getTitulo());
			pstm.setString(2, filmesTO.getSubtitulo());
			pstm.setString(3, filmesTO.getCodigo());
			pstm.setString(4, filmesTO.getGenero());
			pstm.setString(5, filmesTO.getDuracao());
			pstm.setString(6, filmesTO.getProdutora());
			pstm.setString(7, filmesTO.getPais());
			pstm.setString(8, filmesTO.getMidia());
			pstm.setDate(9, new Date(filmesTO.getAno().getTimeInMillis())); <---------
			pstm.setString(10, filmesTO.getCondicao());
			pstm.setString(11, filmesTO.getEstado());
			pstm.setString(12, filmesTO.getLegenda());
			pstm.setString(13, filmesTO.getIdioma());
			pstm.setString(14, filmesTO.getDistribuidora());
			pstm.setDate(15, new Date(filmesTO.getDatacompra().getTimeInMillis()));   <---------
			pstm.setDate(16, new Date(filmesTO.getDatacadastro().getTimeInMillis()));  <---------
			pstm.execute();
		} catch (Exception ex) {
			ex.printStackTrace();
			System.out.println("Erro: " + ex);
			throw new Exception(ex);
		}
Criado 6 de agosto de 2008
Ultima resposta 7 de ago. de 2008
Respostas 12
Participantes 4