Jcalendar java.util.Date cannot be cast to java.sql.Date

7 respostas
Vodga

Não estou conseguindo salvar a data do Jcalendar no banco de dados, alguem poderia me ajudar?
// se o erro for simples me desculpem, sou aprendiz ainda em Java.

Código que executa quando clica no botão salvar (VIEW):
public void cadastro(){
        
             try {
                  Variavel c1 = new Variavel();
c1.setNome(jTnome.getText());
c1.setNascimento( (java.sql.Date) jTnascimento.getDate()); // o erro e nessa linha
c1.setSexo(jCsexo.getSelectedItem().toString());   
c1.setCPF(jTcpf.getText());

 cadastroDao dao = new cadastroDao();
            dao.adiciona(c1);
        } catch (SQLException ex) {
            Logger.getLogger(GerenciarClientes.class.getName()).log(Level.SEVERE, null, ex);
        }
        }
A parte que ele manda pro banco de Dados(model):
public void adiciona(Variavel c1) throws SQLException{
                String sql = "insert into cliente (nome,Nascimento,Sexo,"
                        + "CPF)"
                        + " values (?,?,?,?);";
                
           PreparedStatement stmt = conexao.prepareStatement(sql); 
            stmt.setString(1, c1.getNome());
            stmt.setDate(2,new java.sql.Date(c1.getNascimento().getTime()));   
              stmt.setString(3, c1.getSexo());
                stmt.setString(4, c1.getCPF());

         stmt.execute();
         stmt.close();
       }
Erro:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date
	at View.GerenciarClientes.cadastro(GerenciarClientes.java:649)
linha do erro(GerenciarClientes.java:649):
c1.setNascimento( (java.sql.Date) jTnascimento.getDate());
a variavel de controle (control);
public class Variavel {
    
     private int matricula;
    private String nome;
    private Date nascimento;
    private String sexo;
    private String CPF;


// com construtor vazio e um inteiro
// e com get e set
banco de dados:
CREATE  TABLE IF NOT EXISTS `Academia`.`cliente` (
 `matricula` INT NOT NULL AUTO_INCREMENT ,
  `nome` VARCHAR(45),
  `Nascimento` Date,
  `Sexo` VARCHAR(10),
  `CPF` VARCHAR(14),
  PRIMARY KEY (`matricula`) 

)

ENGINE = InnoDB

Desculpe qualquer coisa, é que meu professor nao ensinou a trabalhar com datas e eu estou tentando fazer um programa com aquele Jcalendar.
o codigo é bem maior, mas tirei algumas coisas pra nao ficar gigante.

7 Respostas

Danilo_Carvalho

Qual banco de dados você está utilizando?

Vodga

MySql / usando o programa Wampserver

Danilo_Carvalho

Isso aqui resolve seu problema.

c1.setNascimento(new java.sql.Date(jTnascimento.getDate().getTime)); // o erro e nessa linha

Mas tenho outra dica para voce!

Até mais…

Danilo_Carvalho

Criar um objeto passando o java.util.date como long que são os milissegundos resolve.

Mas por que não usar TIMESTAMP no seu banco de dados? Assim você pode sempre usar java.util.date.

Quando trabalhava com swing eu usava o nachocalendar.jar. tem um exemplo dele em um sistema que fiz a um tempo http://tidanilocarvalho.wordpress.com/2013/05/30/projeto-para-gerenciar-entregar-manager-deliveries/

Deu certo?

Até mais…

Vodga

Danilo Carvalho:
Isso aqui resolve seu problema.

c1.setNascimento(new java.sql.Date(jTnascimento.getDate().getTime)); // o erro e nessa linha

Mas tenho outra dica para voce!

Até mais…

valeu cara, muito obrigado mesmo!
funcionou perfeitamente, só que vc esqueceu de por () no getTime XD

c1.setNascimento(new java.sql.Date(jTnascimento.getDate().getTime()));
Danilo_Carvalho

Opa, legal, é que digitei aqui no fórum mesmo e dei um (ctrl+space) e não completou! ahahaha!

Precisando só postar a dúvida ai.

Até mais…

Vodga

Aproveitando o topico então…
sabe me dizer como faço pra calcular um valor de cada Checkbox?
por exemplo:

ao selecionar o checkbox, a mensalidade vai ser aumentada conforme o valor que estiver em modalidades.
eu ja tentei fazer mas ta dificil.
eu vou ter que pegar um valor do BD e agregar a uma variavel que vai aumentando conforme for selecionando as checkbox
mas ainda nao consegui fazer o codigo ‘-’
se tiver como ajudar…
terei que usar um IF pra cada caixinha certo?

Criado 12 de junho de 2013
Ultima resposta 12 de jun. de 2013
Respostas 7
Participantes 2