InsertRecord возвращает false, но кажется, что ошибки не произошло - PullRequest
0 голосов
/ 18 июня 2020

Я новичок в qt sql, и проблема, возникающая в QSqlRelationalModel, меня слишком озадачила.

Конструктор модели:

RecordTableModel::RecordTableModel(QSharedPointer<BookTableModel> bookTableModel, QObject *parent)
    : QSqlRelationalTableModel(parent), BookTable(BookTableModel)
{
    setTable("record");
    select();

    setRelation(fieldName::genre, QSqlRelation("genres", "id", "genre"));
    setRelation(fieldName::recordState, QSqlRelation("recordStates", "id", "state"));

    /*test start*/
    addEntry(0);
    /*test end*/
}

addEntry:

int RecordTableModel::addEntry(int bookId)
{
    QSqlRecord record = this->record();
    QSqlRecord bookRecord = bookTable->getRecord(bookId);

    //modify record
    record.setValue(fieldName::bookId, bookRecord.value(BookTableModel::fieldName::bookId));
    record.setValue(fieldName::bookName, bookRecord.value(BookTableModel::fieldName::bookName));
    record.setValue(fieldName::author, bookRecord.value(BookTableModel::fieldName::author));
    //... others same like this

    if (!insertRecord(-1, record)) {
        qDebug() << lastError() << "fail to insert record in addEntry function";
    }

    submitAll();
}

В тесте консоль показывает сообщение выше, но lastError () не содержит сообщения об ошибке. И на самом деле запись успешно вставлена ​​в таблицу. Может ли кто-нибудь помочь решить проблему?

...