Com tratar um Date na APP p/ salvar no BD

9 respostas
fsfnit

Bom pessoal, a minha dúvida é a seguinte:

Tenho uma App em swing, onde tenho alguns campos onde o usuário informa datas em que pagou certas taxas.
Tudo que vem dos campos da tela, vem como String , e vem dos jFormatedTextField´s com mascara ##/##/####.
Bom, eu to pensando em fazer o seguinte:
Pego os dados da Tela, e crio um bean com esses dados.
Ai que está o ponto chave.
Seto os atributos no meu bean como String criando os atributos como por exemplo: String dataTaxa1,dataTaxa2, recebendo jformatedtxtfield.getText() … ou ja seto os atributos no bean como Date dtTaxa1,dtTaxa2 e faço um casting p/ date?

Uma vez salvos como Date posso colocar no Banco direto ou tem alguma formatação que deve ser feita ?
Vale a pena usar o Date do pacote sql ?
Obrigadod desde já.

9 Respostas

Pedrosa

Use Timestamp no seu bean e formate com algo mais ou menos assim:

//Data dd/mm/yyyy
public static Timestamp transformaTimestamp(String data){
		Calendar c = Calendar.getInstance(new Locale("pt","BR"));
		String dataArr[] = data.split("/");
		Timestamp t = null;
		if(dataArr[0]!=null && dataArr[1]!=null && dataArr[2]!=null){
			c.set(Integer.parseInt(dataArr[2]), Integer.parseInt(dataArr[1])-1, Integer.parseInt(dataArr[0])); // assinatura do metodo: set(ano, mes-1, dia);
			t = new Timestamp(c.getTimeInMillis());
		}
		return t;
	}

Testando

public static void main(String[] args) {
    System.out.println(transformaTimestamp("22/01/2007"));
}
fsfnit

Pedrosa, orbigado pelo trecho de código, mas acho que não é bem isso o que eu preciso,com execção da parte de retirar as “/” da mascara.
Eu quero salvar as datas no formato ##/##/#### mesmo, só queria saber se no meu bean, ja seto as datas como Dates ou deixo0 como String e só converto nas Query´s do Banco.
E vcs recomendam o uso do Date da biblioteca sql (sql.Date)?
Vlw galera.

B

fsfnit,
eu deixaria como Date mesmo…
mas se der erro, faz como string e converte no sql

att

fsfnit

E quando em algum campo Data meu, eu precisar salvar vazio ?
Eu testo se algum de meus campos datas estão vazio, e seto como nulo, mas me dá erro.
O que faço ?

B

a respectiva coluna no banco deve aceitar o valor null…
se está dando erro… ela deve estar como NOT_NULL
usa o tipo java.sql.Date …

Att

M

Se seu campo no banco permitir null e estiver passando parametro para um PreparedStatement, pode setar null da seguinte maneira:

prpStmt.setNull(numeroDoParametro, Types.DATE);

Assim não da erro.

Gobain

Olá,

Acho q o mais prático seria vc usar o SimpleDateFormat pra tratar a sua data…
http://java.sun.com/javase/6/docs/api/java/text/SimpleDateFormat.html

fsfnit

brunolinsalves:
a respectiva coluna no banco deve aceitar o valor null…
se está dando erro… ela deve estar como NOT_NULL
usa o tipo java.sql.Date …

Att


Fala Bruno, fui dar uma conferida no Banco e tava setado p/ aceitar NULL mesmo.
Vlw pela força ai meu camarada.

fsfnit

molmedo:
Se seu campo no banco permitir null e estiver passando parametro para um PreparedStatement, pode setar null da seguinte maneira:

prpStmt.setNull(numeroDoParametro, Types.DATE);

Assim não da erro.

O banco ta aceitando Null, e entendi essa dica de setar Null pelo PreparedStatement, mas então vou ter que testar sempre se cada campo da tela do Swing esta vindo como " ", e caso venha uso esse método .
Haja if e else .
Vai dar um trabalhinho, tenho quase 20 campos datas, em uma única tela.
É isso mesmo ?

Vlw pela força ai parceiro.

Criado 22 de janeiro de 2008
Ultima resposta 22 de fev. de 2008
Respostas 9
Participantes 5