Ярлыки

четверг, 15 февраля 2018 г.

Qt - QSqlTableModel не сохраняет данные

Для сохранения данных в QSqlTableModel необходимо выбрать стратегию

 setEditStrategy(QSqlTableModel::OnManualSubmit);
обычно это делают в конструкторе. Затем производят запись методом insertRecord()

    QSqlRecord newRecord = record();
    newRecord.setValue("surname", surname);
    newRecord.setValue("name", name);
    if (!insertRecord(rowCount(), newRecord)) {
        qWarning() << "Failed to save data:" << lastError().text();
        return;
    }
и применяют изменения методом submitAll()

    if(!submitAll()){
        qWarning() << "Failed to submitAll:" << lastError().text();
    }
если после этого данные не сохраняются в БД, возможно не правильно настроенны первичные ключи, мне помогло включение AUTOINCREMENT для поля с первичным ключем. Более подробно тут.

Комментариев нет:

Отправить комментарий