Converter String em data.sql.date

01/05/2018

0

Pessoal o método abaixo faz a leitura de arquivo txt onde pega os campos separados por (;)
e carrega o meu objeto (objServidor) para então gravar no banco de dados.
Ocorre que o campo que recebe a datainiexercicio (01/05/2018) por exemplo não esta rodando.
Usei um metodo que formata a string e converte em data pois no objeto ela é uma data do tipo
java.sql.Date. O método é o formatarData que retorna uma data.sql.date que deixei mais abaixo para verificação de o porque
não esta aceitando esta data. Testei os outros campos e esta tudo funcionando menos a data.
O meu banco de dados é o Firebidr 2.1 e o campo data esta como Date.
Segue exemplo de uma linha o txt

MIQUEIAS DA SILVA NORE;6964443;1;56;1;6;2;03/10/2000;ATIVO;*

Quem puder ajudar agradeço.


private void ImportarTXT(){
//inicializando as variaveis dos campos a serem gravados
int totalLinhas = 0;
RetornarQdeLinhasDoTxt qdeLinhas = new RetornarQdeLinhasDoTxt();

//setando o caminho do arquivo TXT no edit do formulario apenas para mostrar o arquivo que esta sendo importado
SelecionarArquivoTexto select = new SelecionarArquivoTexto();
caminhoTXT = select.ImportarTXT();

if(caminhoTXT != null)
{
//setando o caminho do arquivo TXT na variavel caminhoTXT para pegar os valores
txtARQUIVO.setText(caminhoTXT);
totalLinhas = qdeLinhas.retornaNumLinhasDoTxt(caminhoTXT);
//JOptionPane.showMessageDialog(null, "Qde de linhas do arquivo...: "+String.valueOf(totalLinhas));


//criando uma variavel arquivo do tipo File e setando o caminho do arquivo TXT nela
File arquivo = new File(caminhoTXT);
try {
FileReader ler = new FileReader(arquivo);
BufferedReader lerBuf = new BufferedReader(ler);
linha = lerBuf.readLine();

while(linha != null)
{
nome = linha.split(";")[0];
rf = linha.split(";")[1];
svinculo = linha.split(";")[2];
cargobase = linha.split(";")[3];
departamento = linha.split(";")[4];
unidade = linha.split(";")[5];
tiposervidor = linha.split(";")[6];
datainiexercicio = linha.split(";")[7];
status = linha.split(";")[8];
obs = linha.split(";")[9];


//setando os valores no objeto do modelo
objServidor.setNome(nome);
objServidor.setRf(rf);
objServidor.setVinculo(Integer.parseInt(svinculo));
objServidor.setCargobase(Integer.parseInt(cargobase));
objServidor.setDepartamento(Integer.parseInt(departamento));
objServidor.setUnidade(Integer.parseInt(unidade));
objServidor.setTiposervidor(Integer.parseInt(tiposervidor));

==========================================================================
objServidor.setDtinicioexercicio(formatarData(datainiexercicio));
==========================================================================

objServidor.setStatus(status);
objServidor.setObs("");

//gravando no banco de dados, antes verifica se o rf já esta cadastrado e não grava se isso acontecer
if(umMetodo.duplicidadeDeCadastro("TBLSERVIDORES", "rf", rf)){
//JOptionPane.showMessageDialog(null,"O ServidorComCargo "+nome+" já esta cadastrado!");
contador = 0;
}else{
if (ctrlServidor.salvarServidor(objServidor)){
contador = 1;
}
}

//lendo a proxima linha
linha = lerBuf.readLine();

}
} catch (Exception e) {
JOptionPane.showMessageDialog(null,"Erro ao tentar ler o arquivo!");
}
if (contador > 0){
JOptionPane.showMessageDialog(null,"Os dados foram importados com sucesso!");
}else if (contador == 0){
JOptionPane.showMessageDialog(null,"Nenhum registro foi cadastrado com sucesso!","Atenção possíveis erros de leitura ou duplicidades!",2);
}
}
contador = 0;
}



public Date formatarData(String data) throws Exception
{
if (data == null || data.equals(""))
return null;
Date date = null;
try {
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
date = (Date)(java.util.Date)formatter.parse(data);
} catch (ParseException e) {
throw e;
}
return date;
}
Edi Souza

Edi Souza

Responder

Posts

15/11/2018

Nelson Anjos

Cara o melhor é você tratar isso como texto em seu banco. Por que data num baço de dados geralmente é: aaaa-mm-dd, ai depende da documentação do banco. Te aconselho a ver a documentação do mesmo caso queira seguir com a ideia. Ou mudar para texto
Responder

15/11/2018

Nelson Anjos

Quis dizer *banco
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar