Manipulando datas

Olá pessoal, estou com dificuldades em manipular Datas no java, gostaria da ajuda de vcs!!!

O programa deve pegar a data atual, quando clicado o botão novo, e mostrá-la na tela, até ai deu certo
O problema é que da erro na hora de efetuar o cadastro no banco

Aqui o erro:

java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date 

Aqui é o trecho do código para cadastro:

[code]public void cadastroCabeloFeito() throws SQLException, ParseException {

        CabeloFeito cf = new CabeloFeito();  

       SimpleDateFormat sdf = new SimpleDateFormat("dd/mm/yyyy");  
         


        cf.setCodcli(Long.valueOf(jTCodcli.getText()));  
        cf.setData(sdf.parse(jTData.getText()));  
        cf.setEscova((String) (jCEscova.getSelectedItem()));  
        cf.setTintura(jTTintura.getText());  
        cf.setOutros((String) jCOutros.getSelectedItem());  
        cf.setMatizacao(jTMatizacao.getText());  
        cf.setPreco(Float.parseFloat(jTPreco.getText().replace(",", ".")));  
        cf.setPgto((String) jCPgto.getSelectedItem());  
        cf.setRest(Float.parseFloat(jTRest.getText().replace(",", ".")));  
        cf.setObs(jTObs.getText());  

        CabeloFeitoDao dao = new CabeloFeitoDao();  
        dao.adicionaCabeloFeito(cf);  

    }  [/code]

E aqui o código do Método novo, onde é inserido a data atual:

[code]public void novo() throws ParseException{
jTNome.setText("");
jTCodcli.setText("");

    //formatando data  

     
    Date datas = new Date();  

    String dia = ""+datas.getDate();  
    String mes = ""+String.valueOf(datas.getMonth()+1);  
    String ano = ""+(1900 + datas.getYear());  
      
    if(Integer.parseInt(mes)<=9)  
        mes = "0"+mes;  
    jTData.setText((dia+"/"+mes+"/"+ano));  
      
    //fim da formatação  

    //jTData.setText("");  
    jCEscova.setSelectedItem("--");  
    jTTintura.setText("");  
    jCOutros.setSelectedItem("--");  
    jTMatizacao.setText("");  
    jTPreco.setText("");  
    jCPgto.setSelectedItem("--");  
    jTRest.setText("");  
    jTObs.setText("");  
 }  [/code]

Você está tentando usar um java.util.Date onde deve ser um java.sql.Date. Na sua exceção, deve indicar a linha em que ocorre o problema.
Veja, se está pegando o retorno de uma conexão JDBC, de uma Query, é sempre um java.sql.Date (pode ser Timestamp, mas vamos imaginar só java.sql.Date) e não java.util.Date.

O problema ocorre na linha 12 do trecho do cadastro

Mas no método Novo(), onde é pego a data atual é exigido java.util.Date

eu não sei como trabalhar nesta classe com java.sql.Date

por favor Nel dê uma força ai

obrigado

Desculpe-me onde está problema(1ª linha) Lê-se Erro

qual o tipo do atributo data da classe CabeloFeito ? java.util.Date, ou java.sql.Date? Analise os imports

Então, no método novo() onde é pego a data atual é exigido o import java.util.Date

e o erro fala exatamente isso, “erro ao tentar converter java.util.Date para java.sql.Date”

obrigado

Ta, precisamos saber aonde você está enviando um java.util.Date, para um java.sql.Date, se puder postar o método com erro, indicando a linha, facilitaria bastante.

Como o nel disse, você provavelmente está tendo esse problema em algum método de persistência.

Então digaoneves o método de persistência está aqui:

[code]

import java.sql.Date;

public void adicionaCabeloFeito(CabeloFeito cf) throws SQLException{
String sql = “insert into cabelofeito(codcli, data, escova, tintura, outros, matizacao, preco, pgto, rest, obs)” +
" values(?,?,?,?,?,?,?,?,?,?);";

    PreparedStatement stmt = conexao.prepareStatement(sql);

    //Seta os Valores

    stmt.setLong(1, cf.getCodcli());
    stmt.setDate(2, (java.sql.Date) (Date)cf.getData());
    stmt.setString(3, cf.getEscova());
    stmt.setString(4, cf.getTintura());
    stmt.setString(5, cf.getOutros());
    stmt.setString(6, cf.getMatizacao());
    stmt.setFloat(7, cf.getPreco());
    stmt.setString(8, cf.getPgto());
    stmt.setFloat(9, cf.getRest());
    stmt.setString(10, cf.getObs());

    stmt.execute();
    stmt.close();

}[/code]

E respondendo tua pergunta, o método que trabalha com java.util.Date é o método novo() e os getter e setter

valeu

Acredito que o seu erro esteja nessa linha:

stmt.setDate(2, (java.sql.Date) (Date)cf.getData());

Mesmo sendo filha (java.sql.Date extende java.util.Date) você não pode fazer essa conversão. Acredito que isso: cf.getData() retorne um java.util.Date, correto ?
Ai, para converter, é muito simples, basta fazer:

stmt.setDate(2, new java.sql.Date ( cf.getData().getTime() );

Abraços.

Valeu Nel matou a pau, parabéns, vc é muito bom!!!

tá funcionando perfeitamente!!!

Que Deus te abençoe!!!

REs