Eu estou criando uma loja virtual só que eu tenho um projeto em C#, mas resolvi pegar o mesmo projeto e recriá-lo em Java, para treinar um pouco o que eu aprendi, quando eu estava no curso de desenvolvimento, o cadastro que eu implementei não tinha dados de data, então eu não liguei pois eu pensava que o PreparedStatement, continha algum método para esse tipo de dados, só que quando eu criei as classes básicas eu usei a classe Date do pacote java.util.* .
Mas quando eu chegava na parte do repositório de dados descobri que o tipo de dados do PreparedStatement usa é diferente, então tentei fazer o cast, ele compilou tudo certinho, mas na hora de incluir deu pau.
O Cast ficou assim.
PreparedStatement smt = Con.preparedstatement(sql);
//instrução insert
smt.setInt(1, funcionario.getCodigo());
smt.setDate(2,(java.sql.Date) funcionario.getDataNascimento()); //aqui eu fiz o cast
Só que quando eu vou inserir um registro no banco, a página me retorna um erro dizendo que não foi possível fazer cast, isso eu resolvo mudando na classe básica o tipo de data do funcionário, mas eu gostaria de saber se existe outra opção.
Desculpe-me se eu não fui claro o suficiente, sou iniciante em Java.
Apenas lembrando, java.sql.Date vai tirar a hora da sua data, se vc precisa persistir a informação com a hora vc deve usar java.sql.Timestamp, se instancia da mesma forma que o Date.
Melhor ainda é baixar o framework spring. Ele possui classes muito similares a do java para manipulação de recordsets, mas com as seguintes vantagens:
a) Trabalham diretamente com os tipos de datas do Java;
b) Lançam RuntimeExceptions quando dá problema de banco (nada de ficar colocando try…catch para SQLException em todo lugar);
c) Garantem o fechamento de ResultSets, Statements e Connections;
d) Suportam facilmente pools de conexão;
e) Integradas com o resto do Spring.
Fora que o Spring JDBC Template oferece uma ampla gama de soluções para se trabalhar com procedures.
Mas para mim o melhor é como ele trata as exceptions. Caso vc precise tratar um chave primaria duplicada, o JDBC DAO Templete, de forma independendo do banco de dados, irá lançar uma exception significativa para vc, bem melhor que ter que ficar dando try catch na sql exception e buscando o codigo para saber qual erro aconteceu.
Como foi dito acima, a curva de aprendizado é minima (na verdade basta olha que vc entende), é leve e só traz beneficios.
Oi, pessoal estou aqui para agradecer as dicas que vcs me deixaram, funcionou, mas quando fui consultar o banco de dados a data está errada, eu coloquei a data certa, mas salvou no banco a seguinte data: 1970-01-01.