Estou desenvolvendo um formulario no Netbeans, com inserção em um Banco de Dados MySql. O Sistema está funcionando, o problema é quando tento gravar um valor do tipo Date no banco.
O formato que o usuario digita deve ser dd/mm/aaaa, porém, o mysql só aceita aaaa-mm-dd.
Será que haveria algum modo de fazer esta conversão e gravar este valor corretamente no banco?
Ajuda com Date
4 Respostas
voce poderia capturar a data digitada pelo usuário com um JcomboBox para dia, outro para mes e outro para ano.
Assim na hora de salvar vc uni as strings:
ano + “/” + mes + “/” + ano
outra solução seria você capturar a string (data) digitada pelo usuario e fazer:
String diaStr = data.substring(0, 2);
String barra1 = data.substring(2,3);
String mesStr = data.substring(3, 5);
String barra2 = data.substring(5,6);
String anoStr = data.substring(6, 10);
pronto… aqui você tem o dia, mes e ano separados!
é só concatenar na ordem inversa!
Obrigado pela dica. Mas isso levanta mais uma dúvida.
Tanto no exemplo que você me passou quanto em um exemplo que eu consegui no google os valores que eles me retornam são em String. Haveria como fazer um parse desta String para Date?
public class ConvData
{
private SimpleDateFormat formatIso;
private SimpleDateFormat formatBra;
private Date date;
public ConvData()
{
formatIso = new SimpleDateFormat(“yyyy-MM-dd”);
formatBra = new SimpleDateFormat(“dd/MM/yyyy”);
}
public String parseDataBra(String dataIso)
{
try
{
date = formatIso.parse(dataIso);
return(formatBra.format(date));
}
catch(ParseException e)
{
e.printStackTrace();
return(“Parse Date Error”);
}
}
}
Dá uma olhada neste link, acho que é o que você procura.
http://www.java2s.com/Code/Java/Database-SQL-JDBC/DemoPreparedStatementSetDate.htm
Estou passando para postar que eu consegui, caso esta seja a dúvida de mais alguem, vou postar abaixo o que eu fiz.
Na minha classe eu “quebrei” a data como foi sugerido…
int dia = Integer.parseInt(tData.getText().substring(0, 2));
String barra1 = tData.getText().substring(2,3);
int mes =Integer.parseInt(tData.getText().substring(3, 5));
String barra2 = tData.getText().substring(5,6);
int ano = Integer.parseInt(tData.getText().substring(6, 10));
ConvData ndata = new ConvData();
String data = ndata.convertStringToDate(dia,mes,ano);
Depois criei uma classe com um método para converter e concatenar…
public class ConvData {
public String convertStringToDate(int dia, int mes, int ano) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd");
String in = ano + "-" + mes + "-" + dia;
//Date theDate = null;
//try {
// theDate = dateFormat.parse(in);
//} catch (ParseException ex) {
// Logger.getLogger(frmDespesas.class.getName()).log(Level.SEVERE, null, ex);
// }
return in;
}
}
Ae, para enviar para o banco, enviei como String, mesmo que na tabela está definido como data, ele aceitou e foi no formato que eu queria yyyy-mm-dd.
Agradeço a colaboração…