Problemas com JXDatePicker

3 respostas
wamarra

E aê galera,

Estou tendo problemas ao inserir no banco o conteúdo de um JXDatePicker utilizando o PreparedStatement no qual está dando erro na linha:

O compilador diz que não é aplicável.
A parte do código é:

PreparedStatement ps = con.prepareStatement("INSERT INTO lancamentosjuridico WHERE condominio = ? , servico = ? , hora = ? , data = ? , contato = ? , comentario = ?"); ps.setString(1, (String) comboJurLancCondominio.getSelectedItem()); ps.setString(2, (String) comboJurLancServico.getSelectedItem()); ps.setString(3, cxTxtJurLancHorario.getText()); ps.setString(4, jxJurLancData.getDate()); ps.setString(5, cxTxtJurLancContatoCom.getText()); ps.setString(6, cxTxtJurLancComentarios.getText());
Caso tenham alguma idéia de como resolver isso,
Fico eternamente grato.
Vlw!

3 Respostas

D

Ollha isso varia muito do banco que vc ta trabalhando cada um aceita um formato diferente para as datas.
No mysql por exemplo o formato da data é yyyy-mm-dd ,nesse caso vc tem formatar a data ser inseriada pq
o datapicker retorna um formato diferente .
Qual vc ta usando e coloca o erro que fica mais facil.

wamarra
Daniel.F:
Ollha isso varia muito do banco que vc ta trabalhando cada um aceita um formato diferente para as datas. No mysql por exemplo o formato da data é yyyy-mm-dd ,nesse caso vc tem formatar a data ser inseriada pq o datapicker retorna um formato diferente . Qual vc ta usando e coloca o erro que fica mais facil.
Boa noite Daniel, O banco que eu utilizo é o MySQL, porém o compilador já dá erro na linha:
ps.setString(4, jxJurLanData.getDate());
antes mesmos de compilar. Estou Utilizando o NetBeans. No qual tenho um JButton com um evento. E dentro desse evento tenho esse código:
private void incluirLancamentosJuridico(java.awt.event.ActionEvent evt) {
        try{
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql//localhost:3306/gerpro";
            String usuario = "root";
            String senha = "admin";
            Connection con;
            con = DriverManager.getConnection(url, usuario, senha);
            PreparedStatement ps = con.prepareStatement("INSERT INTO lancamentosjuridico WHERE condominio = ? , servico = ? ," +
                    "hora = ? , data = ? , contato = ? , comentario = ?");
            ps.setString(1, (String) comboJurLancCondominio.getSelectedItem());
            ps.setString(2, (String) comboJurLancServico.getSelectedItem());
            ps.setString(3, cxTxtJurLancHorario.getText());
            ps.setString(4, jxJurLancData.getDate());
            ps.setString(5, cxTxtJurLancContatoCom.getText());
            ps.setString(6, cxTxtJurLancComentarios.getText());
            
            ps.executeUpdate();
            
            con.close();
                JOptionPane.showMessageDialog(null, "Lançamento incluido com sucesso!","Mensagem do Programa",
                        JOptionPane.INFORMATION_MESSAGE);
        }catch (ClassNotFoundException e ){
            JOptionPane.showMessageDialog(null, "Falha na conexão com o banco de dados.\n" + e.getMessage());
                e.printStackTrace();
        }catch (SQLException e){
            JOptionPane.showMessageDialog(null, "Erro ao tentar incluir o lançamento.\n" + e.getMessage(),
                    "Mensagem do Programa",JOptionPane.ERROR_MESSAGE);
        }   
}

Quando coloco o cursor em cima da linha com o erro o compilador diz que:
setString(int,java.lang.String) in java.sql.PreparedStatement cannot be applied to(int,java.util.Date)
Já tentei transformar o conteúdo do JXDatePicker em String, mas também dá erro.

Será que alguém sabe o porque disso?

Vlw galera.

F

Qual tipo que vc esta usando no banco para inserir a data ?

Se for o tipo date vai dar erro mesmo que você converta para o tipo data do Java, porque o formato da data do MySQL é yyyy-mm-dd.

Já que você quer pega o valor do textField, usa varchar pra inserir no banco. Ae você pode usar o metodo pra verifica se ela é válida ou não.

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        sdf.setLenient(false);
        Date data = null;
        try {

            // se passou pra cá, é porque a data é válida
            data = (Date) sdf.parse(dataString);
        } catch (ParseException e) {
            // se cair aqui, a data é inválida
            e = new ParseException("Data: " + dataString + " inválida", 1);
            System.err.println(e.getMessage());
        }
Ainda sim acho melhor você usar um JXDatePicker ou JSpinner

[url]http://java2s.com/Code/Jar/s/Downloadswingx161jar.htm[/url]

Ela vai fazer todo o trabalho pra você.

Criado 21 de novembro de 2007
Ultima resposta 15 de mai. de 2013
Respostas 3
Participantes 3