Как исправить ошибку 'Parameter count mismatch' при закрытии приложения в Qt с использованием базы данных SQLite?

У меня есть приложение на Qt, которое использует базу данных SQLite для хранения данных. Я хочу, чтобы данные автоматически сохранялись в базе данных при закрытии приложения. Я пытаюсь реализовать это с помощью переопределения метода closeEvent в классе MainWindow, чтобы выполнить запрос SQL для вставки данных в базу данных при закрытии окна. Однако при выполнении запроса возникает ошибка "Parameter count mismatch". Мои попытки заключаются в следующем:

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("DBase.db");

    // Проверка успешности подключения
    if (!db.open()) {
        qDebug() << "Ошибка открытия базы данных:" << db.lastError().text();
    } else {
        qDebug() << "База данных открыта успешно!";
    }

    ui->boxGrade->hide();
    ui->inTask->hide();
}

void MainWindow::closeEvent(QCloseEvent *event)
{
    // При закрытии окна сохраняем данные в базе данных
    // Получаем текст задачи из поля ввода
    QString taskText = ui->inTask->text();

    // Создаем запрос SQL для вставки данных в базу данных
    QSqlQuery query;
    query.prepare("INSERT INTO TaskList (TASK) VALUES (:taskText)");
    query.bindValue(":taskText", taskText);

    // Выполняем запрос
    if(query.exec()) {
        qDebug() << "Данные успешно добавлены в базу данных!";
    } else {
        qDebug() << "Ошибка при добавлении данных в базу данных:" << query.lastError().text();
    }

    QMainWindow::closeEvent(event);
}

Как я могу исправить эту ошибку и реализовать автоматическое сохранение данных при закрытии приложения? Рассписал как мог что бы понятнее было


Ответы (0 шт):