Inserir data no Banco MYSQL [RESOLVIDO]

5 respostas
Daianne

uso este método para inserir uma turma no banco de dados

public void inserir(Turma turma) throws SQLException {
        String sql = "INSERT INTO turma( nome,instrutor, datainicio, vaga, dataconclusao) values (?,?,?,?,?)";
        PreparedStatement smt = conexao.pegarConexao().prepareStatement(sql);

        smt.setString(1, turma.getNome());
        smt.setInt(2, turma.getInstrutor().getCodigo());
        smt.setDate(3,(java.sql.Date) turma.getDataInicio());
        smt.setString(4, turma.getVagas());
        smt.setDate(5,(java.sql.Date) turma.getDataConclusao());
      
        smt.execute();
        smt.close();

    }

Mas da erro para inserir a data

este é o meu botão cadastrar

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
             TurmaDAO turmaDAO = new TurmaDAO();
        Turma turma = new Turma();

        turma.setNome(CampNome.getText());
        turma.setDataInicio(CampDataInicil.getDate());
        turma.setDataConclusao(CampDataConclusao.getDate());
        turma.setInstrutor((Instrutor) Instrutor.getSelectedItem());
        turma.setHorario(CampCargaHoraria.getText());
        turma.setVagas(CampVaga.getText());

        JOptionPane.showMessageDialog(null, "Cadastro feito com sucesso");

        CampNome.setText("");
        Instrutor.setSelectedIndex(-1);
        CampCargaHoraria.setText("");


        try {
            turmaDAO.inserir(turma);
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(this, "Erro ao criar "+ex.getMessage());
        }
    }

aparece este erro

Exception in thread AWT-EventQueue-0 java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date

at autoescola.bancosdedados.TurmaDAO.inserir(TurmaDAO.java:39)

at autoescola.interfaceusuario.CadastroTrurma.jButton1ActionPerformed(CadastroTrurma.java:238)

at autoescola.interfaceusuario.CadastroTrurma.access$100(CadastroTrurma.java:26)

at autoescola.interfaceusuario.CadastroTrurma$2.actionPerformed(CadastroTrurma.java:161)

5 Respostas

wbdsjunior

para inserir uma data no PreparedStatment você não precisa fazer cast para java.sql.Date

smt.setDate(3, turma.getDataInicio());
JavaMania

Exato.

Daianne

mas quando faço dessa forma smt.setDate(3, turma.getDataInicio());

da erro informa que são tipos incompatíveis

Daianne

Estou usando o import java.util.Date
tem algun problema nisso?

Daianne

Consegui resolver
ficou assim

public void inserir(Turma turma) throws SQLException {
        String sql = "INSERT INTO turma( nome,instrutor, datainicio, vaga, dataconclusao) values (?,?,?,?,?)";
        PreparedStatement smt = conexao.pegarConexao().prepareStatement(sql);

        smt.setString(1, turma.getNome());
        smt.setInt(2, turma.getInstrutor().getCodigo());
        smt.setDate(3, new Date(turma.getDataInicio().getTime()));
        smt.setString(4, turma.getVagas());
        smt.setDate(5, new Date(turma.getDataInicio().getTime()));
      
        smt.execute();
        smt.close();

    }

usei o import java.sql.Date

Criado 7 de julho de 2009
Ultima resposta 7 de jul. de 2009
Respostas 5
Participantes 3