Хранить дату в java с методами SET and GETTERS

мой вопрос такой, как я могу хранить дату в JFrame имея jDateChooser, чтобы выбирать вышеупомянутую дату, я использую методы SET and GETTERS. Мой признак класса Producto он Date fechaVencimiento у которого есть методы

public Date getFechaVencimiento() {
        return fechaVencimiento;
    }

    public void setFechaVencimiento(Date fechaVencimiento) {
        this.fechaVencimiento = fechaVencimiento;
    }

В моем BD MySQL поле датирует - типа ВОСХОДИТЕ. И прочитанный где-то здесь, который Я нуждаюсь В том, чтобы Конвертировать java.util.Date в java.sql.Date. что я делаю следующей формы:

java.sql.Date fecha_Vencimiento = new java.sql.Date(fechaVencimiento.getTime());

и в моем методе сохранять переместило это его как параметр:

    public void guardar() {
        try {
            Connection miComando = AdministradorConfiguracion.obtenerComandoMySql();
            CallableStatement insertarProducto = miComando.prepareCall("call insertar_Producto(?,?,?,?,?,?,?,?,?,?)");
            insertarProducto.setString(1, producto);
            insertarProducto.setDouble(2, cantidad);
            insertarProducto.setDouble(3, precioCosto);
            insertarProducto.setDouble(4, precioVenta);
            insertarProducto.setString(5, marca);
            insertarProducto.setString(6, descripcion);
            insertarProducto.setInt(7, idcategoria);
            insertarProducto.setInt(8, idproveedor);
            >>insertarProducto.setDate(9, fecha_Vencimiento);<<
            if (this.image != null) {
                insertarProducto.setBinaryStream(10, image);
            }

            if (this.idproducto != 0) {
                CallableStatement modificarProducto = miComando.prepareCall("call modificar_producto(?,?,?,?,?,?,?,?,?,?,?)");
                modificarProducto.setInt(1, idproducto);
                modificarProducto.setString(2, producto);
                modificarProducto.setDouble(3, cantidad);
                modificarProducto.setDouble(4, precioCosto);
                modificarProducto.setDouble(5, precioVenta);
                modificarProducto.setString(6, marca);
                modificarProducto.setString(7, descripcion);
                modificarProducto.setInt(8, idcategoria);
                modificarProducto.setInt(9, idproveedor);
                >>modificarProducto.setDate(10, fecha_Vencimiento);<<
                if (this.image != null) {
                    insertarProducto.setBinaryStream(11, image);
                }

                if (modificarProducto.executeUpdate() == 1) {
                    JOptionPane.showMessageDialog(null, "Producto modificado correctamente.", "Producto modificado", JOptionPane.INFORMATION_MESSAGE);
                } else {
                    JOptionPane.showMessageDialog(null, "Ha ocurrido un error al modificar el producto.", "Error", JOptionPane.ERROR_MESSAGE);
                }
            } else {
                this.idproducto = insertarProducto.executeUpdate();
                if (idproducto > 0) {
                    JOptionPane.showMessageDialog(null, "Producto guardado correctamente.", "Producto insertado", JOptionPane.INFORMATION_MESSAGE);
                } else {
                    JOptionPane.showMessageDialog(null, "Ha ocurrido un error al guardar producto.", "Error", JOptionPane.ERROR_MESSAGE);
                }
            }
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(null, "Error al intentar almacenar el producto:\n"
                    + e, "Error en la operación", JOptionPane.ERROR_MESSAGE);
        }
    }

В моем JFrame в моей кнопке сохранять у меня есть следующее:

producto.setProducto(jtxtProducto.getText());
        producto.setCantidad(Double.valueOf(jtxtCantidad.getText()));
        producto.setPrecioCosto(Double.valueOf(jtxtPrecioCosto.getText()));
        producto.setPrecioVenta(Double.valueOf(jtxtPrecioVenta.getText()));
        producto.setMarca(jtxtMarca.getText());
        producto.setDescripcion(jtxtDescripcion.getText());
        Categoria cboCat = (Categoria)jcboCategoria.getSelectedItem();
        int idCat = cboCat.idcategoria;
        producto.setIdcategoria(idCat);
        Proveedor cboProv = (Proveedor)jcboProveedores.getSelectedItem();
        int idProv = cboProv.idproveedor;
        producto.setIdproveedor(idProv);
        producto.setFechaVencimiento(jdcFechaVencimiento.getDate());

Но выполнив мой JFrame, он бросает мне исключение java.lang.NullPointerException в линии java.sql.Date fecha_Vencimiento = new java.sql.Date(fechaVencimiento.getTime()); моего класса Producto

Он был бы благодарен много за Вашу помощь. С уже спасибо.

1
задан 29.05.2017, 05:24
1 ответ

Решение было очень простым, который был следующим: Объявите мой признак класса типа String, которого было бы private String fechaVencimiento; с Вашим методом get и set

public String getFechaVencimiento() {
        return fechaVencimiento;
    }

    public void setFechaVencimiento(String fechaVencimiento) {
        this.fechaVencimiento = fechaVencimiento;
}

Потом в моем методе сохранять () я сделал insertarProducto.setString(9, fechaVencimiento); в мой JFrame использовал jDateChooser и внутри моей кнопки сохранять разместило следующее:

Я Получил año

int año = jdcFechaVencimiento.getCalendar().get(Calendar.YEAR);

Получил месяц

int mes = jdcFechaVencimiento.getCalendar().get(Calendar.MONTH);

Получил

[1128-ого] числа Потом trasforme в String целые переменные año, в месяце и день В конце концов призвал String

String fecha = año+"/"+mes+"/"+dia;

ко мне método set и произошел с ним String даты.

producto.setFechaVencimiento(fecha);

Надеялся, что он кому-то полезен. Спасибо.

1
ответ дан 24.11.2019, 08:46