How to convert `data java.util.Date` to `java.sql.Date`?

Asked

Viewed 76 times

0

The idea is to consult the data by dates in the database (Mysql): I have 2 fields JXDatePicker and I want the return of the data between the initial date and the final date. In Mysql, the field date is in the format DATE (example: 2017-10-11) and in Java the field date is as java.util.Date.

I tried to do the conversion but it does not filter the dates and does not return the result. What is wrong?

Consultation method:

  public List<FinancasModel> listaPorDatas(Date dataInicio, Date dataFinal) throws ParseException {

    System.out.println("Datas " + dataInicio + " " + dataFinal);

    String sql = "select * from financas where dataPagamento between ? and ? ";

    List<FinancasModel> listaPorDatas = new ArrayList<>();
    try {

        PreparedStatement ps = getCon().prepareStatement(sql);
        ps.setDate(1, new java.sql.Date(dataInicio.getTime()));
        ps.setDate(2, new java.sql.Date(dataFinal.getTime()));
        ResultSet rs = ps.executeQuery();

        if (rs != null) {
            while (rs.next()) {

                FinancasModel fm = new FinancasModel();
                fm.setCodFinancas(rs.getInt(1));
                fm.setValor(rs.getDouble(2));
                fm.setDataPagamento(rs.getDate(3));
                fm.setDataCadastro(rs.getDate(4));
                fm.setTipo(rs.getString(5));
                fm.setDescricao(rs.getString(6));
                fm.setObservacao(rs.getString(7));

                listaPorDatas.add(fm);
            }

        } else {

            return null;
        }

    } catch (SQLException e) {

        JOptionPane.showMessageDialog(null, "Erro: " + e);
    }

    return null;
}

Method of listing the query:

public void listaPorDatas(Date dataInicio, Date dataFinal) throws ParseException {

    FinancasDAO cd = new FinancasDAO(con);
    DefaultTableModel model = (DefaultTableModel) tbl_movimentacao.getModel();
    model.setNumRows(0);
    List<FinancasModel> listaPorDatas = cd.listaPorDatas(dataInicio, dataFinal);
    double despesa = 0;
    double renda = 0;
    for (FinancasModel fb : listaPorDatas) {
        if (fb.getTipo().equals("DESPESA")) {
            despesa += fb.getValor();
        } else {
            renda += fb.getValor();
        }
        model.addRow(new Object[]{
            fb.getCodFinancas(),
            Utils.ConverteDouble(fb.getValor()),
            fb.getDataPagamento(),
            fb.getTipo(),
            fb.getDescricao(),
            fb.getObservacao()

        });
    }
    txt_despesa.setText(Utils.ConverteDouble(despesa));
    txt_renda.setText(Utils.ConverteDouble(renda));
    txt_saldo.setText(Utils.ConverteDouble(renda - despesa));
}

Errors returned:

Dates Fri Sep 01 00:00:00 BRT 2017 Sun Oct 01 00:00:00 BRT 2017 Exception in thread "AWT-Eventqueue-0" java.lang.Nullpointerexception at br.com.smartadvocacy.telas.Moving.listaPorData(Moving.java:44) at br.com.smartadvocacy.telas.Movement.Buscarmouseclicked(Motion.java:348) at br.com.smartadvocacy.telas.Moving.access$200(Moving.java:25) at br.com.smartadvocacy.telas.Movement$4.mouseClicked(Movement.java:252) at java.awt.Awteventmulticaster.mouseClicked(Awteventmulticaster.java:270) at java.awt.Component.processMouseEvent(Component.java:6536) at javax.swing.jcomponent.processMouseEvent(Jcomponent.java:3324) at java.awt.Component.processEvent(Component.java:6298) at java.awt.Container.processEvent(Container.java:2236) at java.awt.Component.dispatchEventImpl(Component.java:4889) at java.awt.Container.dispatchEventImpl(Container.java:2294) at java.awt.Component.dispatchEvent(Component.java:4711) at java.awt.Lightweightdispatcher.retargetMouseEvent(Container.java:4888) at java.awt.Lightweightdispatcher.processMouseEvent(Container.java:4534) at java.awt.Lightweightdispatcher.dispatchEvent(Container.java:4466) at java.awt.Container.dispatchEventImpl(Container.java:2280) at java.awt.Window.dispatchEventImpl(Window.java:2746) at java.awt.Component.dispatchEvent(Component.java:4711) at java.awt.Eventqueue.dispatchEventImpl(Eventqueue.java:758) at java.awt.Eventqueue.access$500(Eventqueue.java:97) at java.awt.Eventqueue$3.run(Eventqueue.java:709) at java.awt.Eventqueue$3.run(Eventqueue.java:703) at java.security.Accesscontroller.doPrivileged(Native Method) at java.security.Protectiondomain$Javasecurityaccessimpl.doIntersectionPrivilege(Protectiondomain.java:80) at java.security.Protectiondomain$Javasecurityaccessimpl.doIntersectionPrivilege(Protectiondomain.java:90) at java.awt.Eventqueue$4.run(Eventqueue.java:731) at java.awt.Eventqueue$4.run(Eventqueue.java:729) at java.security.Accesscontroller.doPrivileged(Native Method) at java.security.Protectiondomain$Javasecurityaccessimpl.doIntersectionPrivilege(Protectiondomain.java:80) at java.awt.Eventqueue.dispatchEvent(Eventqueue.java:728) at java.awt.Eventdispatchthread.pumpOneEventForFilters(Eventdispatchthread.java:201) at java.awt.Eventdispatchthread.pumpEventsForFilter(Eventdispatchthread.java:116) at java.awt.Eventdispatchthread.pumpEventsForHierarchy(Eventdispatchthread.java:105) at java.awt.Eventdispatchthread.pumpEvents(Eventdispatchthread.java:101) at java.awt.Eventdispatchthread.pumpEvents(Eventdispatchthread.java:93) at java.awt.Eventdispatchthread.run(Eventdispatchthread.java:82)

  • You can tell which version of Java you use?

  • Java: 8, Update 144

  • Although your question is how to convert date object types, your problem does not seem to be linked to conversion. You had a Datas Fri Sep 01 00:00:00 BRT 2017 Sun Oct 01 00:00:00 BRT 2017 Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at br.com.smartadvocacy.telas.Movimentacao.listaPorDatas(Movimentacao.java:44) at . What does not fit with date type X or Y, but a null object. Check what you have on line 44 of the Movement class.

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.