Erro ao salvar data no mysql[RESOLVIDO]

Boa tarde!

Estou fazendo uma tela onde o cliente vai informar a data, o atendimento que foi feito, o cliente que foi atendido, etc.
Assim que o jInternalFrame é aberto eu coloco a data atual, mas o usuário pode alterá-la.
Só que na hora de passar pro BD dá o seguinte erro:

Já tentei alterar o separador da data para ‘-’ mas tbm não funcionou.
E no bd eu preciso da data com formato date porque depois vai ser a data o meu filtro na hora de gerar o relatório do dia.
Qual seria a melhor forma de fazer isso??
Ou seria melhor no bd criar um campo, dia, mês e ano pra depois na hora de jogar a query jogar o “Order by”?

Seu campo está como na tabela? Como varchar? Se for varchar veja o tamanho dele, talvez esteja com 10 e vc está passando valor com 12.

Na tabela está como Date mesmo!
Pq se estivesse como varchar ele teria comportamento de String e na hora da pesquisa, certo??

O meu código para inserir a data é:

//rorina par inserir data atual ao novo registro Date data = new Date(); String dia = ""+data.getDate(); String mes = ""+String.valueOf(data.getMonth()+1); String ano = ""+(1900 + data.getYear()); if (Integer.parseInt(mes)<=9) mes="0"+mes; txtDataCadOrc.setText(dia+"-"+mes+"-"+ano);

Ao alterar o txtDataCadOrc para txtDataCadOrc.setText(ano+"-"+mes+"-"+dia);
Funcionou, só que existe alguma forma de só na exibição do jInternalFrame ele exibir dia-mês-ano??

jakefrog por o que eu entendi no banco está no formato para datas realmente

Então acho que no caro o que você está fazendo de errado acbucard é passar uma string direramente para o banco por o que percebi quando você fala

Tenta em vez de passar a string transformar ela em java.util.Date utilizando o SimpleDateFormat e posteriormente passando para o banco, assim provavelmente irá dar certo.

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");

Date data = dateFormat.parse(dataString);

acbucard.O mysql só aceita,por padrão, datas no formato "20120119"
que é o padrão americano.
Segue a dica de CharlesAlves que é a melhor opção ou
então muda a data para este formato que da certo.
Outra solução seria mudar o charset do field diretamente no banco, mas eu nao recomendo!

CharlesAlves, então…

Para usar o SimpleDateFormat qual pacote eu teria que importar? Pois está dando erro que não encontra a Classe.
Obs: o java.ultil.Date já está importado!

dariogondim = Eu estava procurando no site do mysql mas também não estava conseguindo.

Desculpem a ignorância, mas tem mais de um ano e meio que terminei meu técnivco e desde então não mexia com Java e quis voltar a estudar.
Agradeço a atenção.

acho q o pacote eh o java.text, testae: java.text.SimpleDateFormat

Mauricioadl= Obrigada, era isso mesmo!!

Agora alguém poderia me dizer o que é esse dataString que está em Date data = dateFormat.parse(dataString);

Erro Cannot find symbol.
Se eu crio a String dataString dá erro de unreported exception.

dataString seria a data que o usuario digita, pois ela eh uma string, dae vc vai usar o parse para converter essa string em um objeto Date para enviar para o banco. ex:

SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy"); String dataString = "19/01/2012"; // d agora eh um objeto do tipo Date Date d = df.parse(dataString);

[]'s

Mauricioadl = Copiei o seu código e colei no programa para testar, porém continua dando erro no
Date d = df.parse(dataString);

Erro

Não sei mais o que fazer! :cry:

acho q esse erro eh prq esta faltando try catch. vc colocou certo?

Significa que o método lança uma exceção que deve ser tratada!
e voce pode resolver escolher tratar dentro do método mesmo,ou delegar a responsabilidade
de tratar o erro para o metodo que chamar este metodo:
Para tratar circunde com isso:

[code] try {
Date d = df.parse(dataString);

} catch (ParseException ex) {
Logger.getLogger(GerenciadorMascaras.class.getName()).log(Level.SEVERE, null, ex);[/code]
Para dar a responsabilidade de tratar a o outro método adicione a palavra “throws” no final do cabeçalho do método

public void parseData throws ParseException() { }
Mas vc tera que adicionar o try-catch circundando o método em algum lugar.

Boa tarde acbucart

V c esse código t serve

//ini validaData
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class sdrfsedr {

  //converte String para data no formato especificado
  public static Date strData(String mydata, String formato) {  
           Date data = null;  
          // String format = formato;
            
           try {  
              //DateFormat dtOutput = new SimpleDateFormat("yyyy-MM-dd HH:mm");  
                 DateFormat dtOutput = new SimpleDateFormat(formato);
              data = dtOutput.parse(mydata); 
           }catch (ParseException e) {  
              e.printStackTrace(); 
           }  
           return data;  
  }

}

elanod = Muito obrigada pelo código.
Mas consegui resolver apenas com o substring.
Até pq não sei quando o usuário vai cadastrar os serviços, daí perco o meu tempo fazendo um código lindo
e ele nem usar.

Obrigada a todos pelas respostas! =)