首页 > 解决方案 > 无法从数据库获取日期到数组

问题描述

我编写了一个小型 Javafx ToDo 应用程序,从 Derby DB 中的 Type Date 中列出我的任务以及截止日期(截止日期)。

我想要做的是将日期记录(到期日期)从数据库获取到 Arraylist 并更改显示到期日期的标签的背景。

当我在数据库中运行 sql 语句时,我得到了正确的记录!但我无法将它们放入 Arraylist。printLn 什么也没显示,我也没有收到任何错误。

如果我得到正确的记录,我会看到标签背景的变化和/或我会得到 System.out.println 中的记录。

这是我的方法:

public ArrayList<Task> getDelayedTasks() throws ClassNotFoundException, SQLException {
    conn = DBConnUtil.getConnection();

    String s = "select duedate from tasks where duedate <= CAST(CURRENT_TIMESTAMP AS DATE);";
     ps = conn.prepareStatement(s);
     rs = ps.executeQuery();
    ArrayList<Task> delayedTaskList = new ArrayList<Task>();
    while (rs.next()) {
        Task task;
        task = new Task(rs.getDate("duedate"));
        delayedTaskList.add(task);

        dueDateLabel.setBackground(Background.EMPTY);

         System.out.println(Arrays.toString(delayedTaskList.toArray()));
         System.out.println(task);
    }
    return delayedTaskList;      
}

在这里我如何在控制器中调用它:

void initialize() throws ClassNotFoundException {
    try {
        getDelayedTasks();
    } catch (SQLException ex) {
        Logger.getLogger(CellController.class.getName()).log(Level.SEVERE, null, ex);
    }
}

这是任务类:

import java.sql.Date;
import java.sql.Timestamp;

public class Task {

    private int taskId;
    private String task;
    private String description;
    private Timestamp dateCreated;
    private Date duedate;



    public Task() {
    }

    public Task(Timestamp datecreated, String description, String task, Date duedate) {
        this.dateCreated = datecreated;
        this.description = description;
        this.task = task;
        this.duedate = duedate;
    }

    Task(Date duedate) {
        this.duedate = duedate;
    }

    public Timestamp getDatecreated() {
        return dateCreated;
    }

    public void setDatecreated(Timestamp datecreated) {
        this.dateCreated = datecreated;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getTask() {
        return task;
    }

    public void setTask(String task) {
        this.task = task;
    }

    public int getTaskId() {
        return taskId;
    }

    public void setTaskId(int taskId) {
        this.taskId = taskId;
    }

    public Date getDueDate() {
        return duedate;
    }

    public void setDueDate(Date duedate) {
        this.duedate = duedate;
    }

}

你能告诉我我做错了什么吗?谢谢

在@RealSkeptic 先生的建议之后,我发现该方法从未被调用过!现在,当我从其他地方调用它时,我会得到一个这样的记录列表:

10.12.2019 00:00:00
18.12.2019 00:00:00

我想我现在需要的是一个循环或改变标签背景的东西。

78

标签: javajavafxarraylist

解决方案


推荐阅读