2017-11-19 10 views
0

String.Iを使用して日付ピッカーを作成したとして、私は、MySQLのテーブルに日付ピッカーから日付を保存しようとしていますしかし、私は文字列の形式で日付を保存しようとすると、このエラーを返します:java.time.DateTimeException:TemporalAccessorからにLocalTimeを取得できません:タイプの2017年10月29日java.time.LocalDate

java.time.DateTimeException:java型のTemporalAccessor:2017-10-29からLocalDateTimeを取得できません。 time.LocalDate

enter image description here

まず、ユーザーからの入力データを観測可能なリストに追加し、それをテーブルにユーザーに表示します。その後、ユーザーが必要な関連データの追加を完了したら、観測可能なリストデータをmysqlデータベースに挿入します。

datePickerデータを観測可能リストにString型で追加したいとします。

私の質問は、日付ピッカーの値を文字列に変更し、それを観測可能リストに渡す方法です。私のコードでは.getEditor()。getText()を使用しましたが、上記のエラーが発生します。

マイdatePickersは、データベース内T_startDateとT_endDate列のデータ型がVARCHAR(50)である

 fromDateCreateTask 
    toDateCreateTask 

に標識されます。 MySQLのテーブルに追加

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()); 

} 

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(); 

    } 
} 
+0

あなたはタスクテーブルのスキーマを追加してもらえますか? – melanzane

答えて

0

あなたはjava.sql.DateまたはJavaを使用することができます

は、これは私のコードです。 DBの日付を処理している間、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; 
}  
} 
+0

あなたの答えをありがとうが、私は質問が幾分不明であるので更新した。私は、datePickerの値を観測可能なリストに文字列として保存し、次に観測可能なリストのデータをmysqlデータベースに保存したいと思います。 – kudzi

+0

データベースの列T_startDateとT_endDateはどのデータ型ですか? – melanzane

+0

彼らはエラーVARCHAR(50) – kudzi

関連する問題