HI,
Continuo avançando aqui no exemplo expenses. Hoje consegui gravar a data no banco de dados, graças a Deus.
Depois de muita tentativa e erro e muitas pesquisas no Google, fui achando as soluções.
Primeiro erro que me deparei foi esse: java.text.ParseException: Unparseable date
Tava tentando converter a data da despesa ( uma string ) que tava no formato dd-MM-yyyy para jogar dentro de uma variável do tipo data. Só depois que percebi que tinha esquecido de trocar o traço pela barra deixando o formato assim: dd/MM/yyyy.
Código para converter uma string em data
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
Date datepayment = formatter.parse(datepaymentText.getText().toString());
datepaymentText é um Button.
O segundo erro que me deparei foi: java.lang.ClassCastException: java.util.Date
Pensei que o problema era na hora de gravar no campo data da tabela. Desabilitei a linha que dá um insert no banco e mesmo assim tava dando esse erro. Então deduzi que o problema era na passagem de parametro. Fiquei pensando, como é que pode passar um campo data para um metódo que tem uma variavel do tipo data e dá erro?
Pesquisando no google descobrir que ao invés de usar a biblioteca java.sql.Date, eu deveria usar java.util.Date. Depois que fiz isso, não deu mais erro.
E nessa mesma busca vi que eu deveria converter essa variável data que tá no formato dd/MM/yyyy para yyyy-MM-dd, que é o formaro do banco de dados.
O código para gravar a data no banco de dados ficou assim:
public long createExpense(Date datepayment){
ContentValues initialValues = new ContentValues();
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
dateFormat.applyPattern("yyyy-MM-dd");
initialValues.put(KEY_DATEPAYMENT, dateFormat.format(datepayment));
return mDb.insert(DB_TABLE, null, initialValues);
}
Deixei só o campo data para exemplificar.
Agora tá beleza, tá gravando e recuperando o campo data
Ficou assim a tela do programa
Espero que possa ser útil.
Páginas que me ajudaram
http://www.guj.com.br/java/76586-converter-um-campo-de-um-text-field-em-date#403825
http://www.guj.com.br/java/36076-converter-string-para-uma-data
http://stackoverflow.com/questions/754684/how-to-insert-a-sqlite-record-with-a-datetime-set-to-now-in-android-application
http://stackoverflow.com/questions/3842509/android-java-datetime-values-from-string-to-long-to-string-issue
Fiquem na Paz!!!
4 comentários:
Olá, muito legal o artigo.
Parabéns!
Poderia fornecer os codigos fonte do aplicativo que está no artigo?
Seria muito útil ao meu aprendizado.
Ainda não tenho um telefone com android, estou pensando em pegar o Galaxy Y. Você tem opinião sobre ele?
Um abraço
Eduardo Le Masson
Olá, li este artigo e me ajudou muito, porém agora não estou conseguindo recuperar o campo date ao fazer uma consulta no banco de dados. Será que pode me ajudar? Obrigado
Oi Gustavo, como tá a condição da data na sua consulta?
Se for comparar com o campo, a data passada precisa estar no formato yyyy-MM-dd
Mas você pode formatar as datas
Nesse exemplo eu pego os registro da data atual
strftime('%d/%m/%Y', Vencimento_mov) = strftime('%d/%m/%Y','now')
Postar um comentário