Novamente estou tendo o problema da interface

Na minha ultima postagem reclamei de um problema que eu tive na interface grafica em um projeto do qual não estava salvando automaticamente como deveria, solucionei A interface não está salvando os projetos

Porem estou tendo o mesmo problema novamente, as tarefas não esta salvando automaticamente, só se eu abrir e tentar dnv e fui testar a solução q mandaram aqui e deu erro diretamente do banco de dados dizendo q ele tava desatualizado


Agora eu to totalmente perdidooo

Segue os codigos original e das tentativas

 Task task = new Task();
          
           task.setIdProject(3);
           
           task.setName(jTextFieldName.getText());
           task.setDescription(jTextAreaDescription.getText());
           task.setNotes(jTextAreaNotes.getText());
           task.setIsCompleted(false);
           
           SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
           Date deadline = null;
           deadline = dateFormat.parse(jFormattedTextFielddeadline.getText());
           task.setDeadline(deadline);
           
           controller.save(task);
           
           JOptionPane.showMessageDialog(rootPane, "Tarefa salva com sucesso");           
           
        } catch (Exception e) {
            e.printStackTrace();
         JOptionPane.showMessageDialog(rootPane, e.getMessage());
        } 
        this.dispose(); 
    }           

Task task = new Task();

        task.setIdProject(3);
        task.setName(jTextFieldName.getText());
        task.setDescription(jTextAreaDescription.getText());
        task.setNotes(jTextAreaNotes.getText());
        task.setIsCompleted(false);
        
        SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
        Date deadline = null;
        deadline = dateFormat.parse(jFormattedTextFielddeadline.getText());
        task.setDeadline(deadline);
        
        taskController.update(task);
        ((MainScreen) getParent()).loadTasks(1);
        JOptionPane.showMessageDialog(rootPane, "Tarefa salva com sucesso");
        } catch (Exception e) {
       JOptionPane.showMessageDialog(rootPane, e.getMessage());
 private void jTableTasksMouseClicked(java.awt.event.MouseEvent evt) {                                         
        // TODO add your handling code here:
       int rowIndex = jTableTasks.rowAtPoint(evt.getPoint());
        int columnIndex = jTableTasks.columnAtPoint(evt.getPoint());
        
        switch(columnIndex){
             case 3:
                 Task task = taskModel.getTasks().get(rowIndex);
                 taskController.update(task);
             break;
             case 4:
                 
            break;
             case 5:
                 
            break;
             
        } 
        
    }          

As suas imagens mostram primeiro um erro de sintaxe na sua query SQL e depois uma violação de integridade ao tentar excluir um registro.

Onde eu acho essa suposta query? no banco? Tem algum codigo q eu possa lançar pra eu identificar isso mais rapido? , o codigo quando eu executo, da esse erro inclusive

Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
WARNING: row index is bigger than sorter's row count. Most likely this is a wrong sorter usage.

Em algum lugar no seu código Java onde você está acessando o banco de dados.

Descobri aonde e corrigi, só que ainda não esta salvando na tela automatico

Resolvi a questão do salvar as tarefas, substituir o update, desse código, pelo save

private void jTableTasksMouseClicked(java.awt.event.MouseEvent evt) {                                         
        // TODO add your handling code here:
       int rowIndex = jTableTasks.rowAtPoint(evt.getPoint());
        int columnIndex = jTableTasks.columnAtPoint(evt.getPoint());
        
        switch(columnIndex){
             case 3:
                 Task task = taskModel.getTasks().get(rowIndex);
                 taskController.update(task);
             break;
             case 4:
                 
            break;
             case 5:
                 
            break;
             
        } 

Mas estou tendo outro problema, o checkbox não está salvando quando eu marco, ai no print, simplesmente não registra nem mesmo quando saio e entro denovo

Posta o código que salva o valor selecionado no checkbox e também o código que atualiza o estado do checkbox com o valor salvo no banco.

Bom, esse é o codigo que to usando no main screen

 private void jTableTasksMouseClicked(java.awt.event.MouseEvent evt) {                                         
        // TODO add your handling code here:
       int rowIndex = jTableTasks.rowAtPoint(evt.getPoint());
       int columnIndex = jTableTasks.columnAtPoint(evt.getPoint());
        
        switch(columnIndex){
             case 3:
                 
             Task task = taskModel.getTasks().get(rowIndex); 
             taskController.update(task);
           /*{
               try {
                   taskController.save(task);
               } catch (SQLException ex) {
                   Logger.getLogger(MainScreen.class.getName()).log(Level.SEVERE, null, ex);
               }
           } */
             break;

             case 4:
                 
            break;
             case 5:
             
            break;
             
        } 
        
    }         

Esse é o que to usando pra atualizar

public void update(Task task){
       String sql = "UPDATE tasks SET " 
               + "idProject = ?, "
               + "name = ?, "
               + "description = ?, "
               + "notes = ?, "
               + "completed = ?, "
               + "deadline = ?, "
               + "createdAt = ?, "
               + "updatedAt = ? WHERE id = ?";
               //+"WHERE id = ?";
          
         Connection connection = null;
         PreparedStatement statement = null;
         
         try {
             //Estabelecendo a conexão com o banco de dados
            connection = ConnectionFactory.getConnection();
            
            //Preparando  a query
            statement = connection.prepareStatement(sql);
            
            //Setando os valores no statement
            statement.setInt(1, task.getIdProject());
            statement.setString(2, task.getName());
            statement.setString(3, task.getDescription());
            statement.setBoolean(4, task.isIsCompleted());
            statement.setString(5, task.getNotes());
            statement.setDate(6, new Date(task.getDeadline().getTime()));
            statement.setDate(7, new Date(task.getCreatedAt().getTime()));
            statement.setDate(8, new Date(task.getUpdatedAt().getTime()));
            statement.setInt(9, task.getId());
            
            //Executando a query
            statement.execute();

Agora, tem esse tbm

  public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        tasks.get(rowIndex).setIsCompleted((boolean) aValue);   
    }

mas agora eu tenho uma pista, quando eu to marcando o checkbox, aparece esse erro

Incorrect integer value: ‘allaa’ for column todo-app.tasks.completed at row 1

e esse é o codigo que uso pra salvar informação

 private void jLabelToolBarSaveMouseClicked(java.awt.event.MouseEvent evt) {                                               
        try {
            Task task = new Task();
            task.setIdProject(project.getId());
            task.setName(jTextFieldName.getText());
            task.setDescription(jTextAreaDescription.getText());
            task.setNotes(jTextAreaNotes.getText());

            SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
            Date deadline = null;
            
            try {
                deadline = dateFormat.parse(jFormattedTextFieldDeadLine.getText());
            } catch (ParseException ex) {
                Logger.getLogger(TaskDialogScreen.class.getName()).log(Level.SEVERE, null, ex);
            }

            task.setDeadline(deadline);
            task.setCompleted(false);
            taskDAO.save(task);

            JOptionPane.showMessageDialog(rootPane, "Tarefa salva com sucesso");
            this.dispose();
        } catch (HeadlessException ex) {
            JOptionPane.showMessageDialog(rootPane, ex);
        }
    }