java.time.DateTimeException:无法从类型为java.time.LocalDate的TemporalAccessor:2017-10-29获取LocalTime

java.time.DateTimeException:无法从类型为java.time.LocalDate的TemporalAccessor:2017-10-29获取LocalTime,java,javafx,datepicker,Java,Javafx,Datepicker,我正在尝试将日期选择器中的日期作为字符串保存到mysql表中。我使用Javafx Scene builder创建了日期选择器,但是当我尝试将日期保存为字符串格式时,它返回以下错误: java.time.DateTimeException:无法从TemporalAccessor:2017-10-29获取java.time.LocalDate类型的LocalDateTime 首先,我想将来自用户的输入数据添加到一个可观察列表中,然后在一个表中向用户显示它。之后,我想在用户完成添加所需的相关数据后,

我正在尝试将日期选择器中的日期作为字符串保存到mysql表中。我使用Javafx Scene builder创建了日期选择器,但是当我尝试将日期保存为字符串格式时,它返回以下错误:

java.time.DateTimeException:无法从TemporalAccessor:2017-10-29获取java.time.LocalDate类型的LocalDateTime

首先,我想将来自用户的输入数据添加到一个可观察列表中,然后在一个表中向用户显示它。之后,我想在用户完成添加所需的相关数据后,将可观察列表数据插入mysql数据库

我想以字符串的形式将datePicker数据添加到可观察列表中

我的问题是如何将日期选择器的值更改为字符串并将其传递到可观察列表中。在我的代码中,我使用了.getEditor().getText(),但它抛出了上述错误

我的约会选择者被贴上了标签

     fromDateCreateTask
     toDateCreateTask
数据库中T_startDate和T_endDate列的数据类型为varchar(50)

这是我的代码:

void addTaskToTable(){


    AllTaskData.add(new Task(
            Integer.parseInt(taskNumberCreateTask.getText()),
            taskNameCreateTask.getText(),
            getProjectId(projectSelectedCombobox.getValue()),
            taskStatusCreateTask.getText(),taskInformationCreateTask.getText(), 
            (String) teamHeadComboBoxCreateTask.getValue(),
            fromDateCreateTask.getEditor().getText(),
            toDateCreateTask.getEditor().getText(),
            timeSpan()));
     createTaskTable.setItems(AllTaskData);

    taskNameCreateTask.clear();
    fromDateCreateTask.getEditor().clear();
    toDateCreateTask.getEditor().clear();
    teamHeadComboBoxCreateTask.setValue("Team Lead");
    taskInformationCreateTask.clear();
    taskCount++;

    taskNumberCreateTask.setText(Integer.valueOf(getTotalNumberOfTasks() + 1+taskCount).toString());

}
添加到mysql表:

public void createMultipleTasks() {

    String sql = " insert into Task (T_id, T_name, P_projectCode, T_status, T_Description, T_lead,T_startDate,T_endDate,T_timespan)"
            + " values (?, ?, ?, ?, ?,?,?,?,?)";

    try {

        for(Task userTasks: AllTaskData){

        int taskNumber = userTasks.getTaskNumber();
        String taskName = userTasks.getTaskName();
        String taskStatus = userTasks.getTaskStatus();
        String taskDescription = userTasks.getTaskInformation();
        String teamLead = userTasks.getTaskTeamMemberAssigned();
        String startingDate = userTasks.getTaskFromDate();
        String endingingDate = userTasks.getTaskToDate();
        int taskcompletionTime = userTasks.getTaskTimeSpan();
        int projectId = userTasks.getProjectCode();//getProjectId(projectSelectedCombobox.getValue());



        preparedStatement = connection.prepareStatement(sql);
        preparedStatement.setInt(1, taskNumber);
        preparedStatement.setString(2, taskName);
        preparedStatement.setInt(3, projectId);
        preparedStatement.setString(4, taskStatus);
        preparedStatement.setString(5, taskDescription);
        preparedStatement.setString(6, teamLead);
        preparedStatement.setString(7, startingDate);
        preparedStatement.setString(8,endingingDate);
        preparedStatement.setInt(9, taskcompletionTime);

        try{
        preparedStatement.execute();
        }catch (Exception e) {
                DBConnection.infoBox("Error Saving Data", "Fail", null);
                e.printStackTrace();
            }
        }
            try {
             DBConnection.infoBox("Click ok to cancel this message", "Sucess", "Saving of tasks has been successfull");

            } catch (Exception e) {
                DBConnection.infoBox("Error Unable to Open View", "Fail", null);
                e.printStackTrace();
            }

    } catch (Exception e) {
        DBConnection.infoBox("Error Saving Data", "Fail", null);
        e.printStackTrace();
    }

}
调用函数:

    @FXML
void handleAddNewTaskAction(ActionEvent event) {

    if (taskNameCreateTask.getText()==null || taskNameCreateTask.getText()==" " || taskNameCreateTask.getText().isEmpty() ||
        fromDateCreateTask.getValue() == null || toDateCreateTask.getValue() == null ||
        teamHeadComboBoxCreateTask.getValue() == null || teamHeadComboBoxCreateTask.getValue().isEmpty() || teamHeadComboBoxCreateTask.getValue() == "Team Lead" ||
        taskInformationCreateTask.getText() == null || taskInformationCreateTask.getText().isEmpty() || taskInformationCreateTask.getText() == " "
            ){
      DBConnection.infoBox("Please enter text in missing fields", "Error Adding Data", "nil");
    }else{

    addTaskToTable();

    }
}

在处理DB日期时,可以使用java.sql.Date或java.sql.Timestamp。请参阅下文

public class JavaDateExceptionResolver {

public static void main(String[] args) throws ParseException {
    dateIssueResolverType1("2017-10-29");
    dateIssueResolverType2("2017-10-29");
}

private static Date dateIssueResolverType1(String input) throws ParseException {

    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
    java.util.Date dt=sdf.parse(input);
    java.sql.Date sqlDate=new java.sql.Date(dt.getTime());
    System.out.println(sqlDate);
    return sqlDate;
 }

private static Timestamp dateIssueResolverType2(String input) throws ParseException {
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
    java.sql.Timestamp stmp=new java.sql.Timestamp(sdf.parse(input).getTime());
    System.out.println(stmp);
    return stmp;
}       
}

你能添加任务表的模式吗?谢谢你的回答,但是我更新了这个问题,因为它看起来有点不清楚。我想先将datePicker值作为字符串保存到可观察列表中,然后将可观察列表数据保存到mysql数据库中。db上的T_startDate和T_endDate列是哪种数据类型?它们是varchar(50)当我尝试将fromDateCreateTask和toDateCreateTask添加到可观察列表时出现错误。是否能够从变量fromDateCreateTask和toDateCreateTask获取值?。如果是这样的话,它们就像2017-10-29。如果是,那么哪些数据类型包含这些变量的数据类型?可观察列表的数据类型是什么。