bool DatabaseBackup::readContents(const QString &filename) { qDebug() << "Read contents from " + filename; QFile file(filename); QSqlQueryModel query; bool res = false; if (file.open(QIODevice::ReadOnly)) { QJsonDocument doc = QJsonDocument::fromJson(file.readAll()); if (doc.isObject()) { res = true; QJsonArray tables = doc.object().take("database").toObject().take("tables").toArray(); QJsonArray::const_iterator i = tables.constBegin(); while (i != tables.constEnd()) { QString tableName = (*i).toObject().take("name").toString(); qDebug() << tableName; QJsonArray records = (*i).toObject().take("records").toArray(); QJsonArray::const_iterator recordIterator = records.constBegin(); while (recordIterator != records.constEnd()) { QVariantMap record = (*recordIterator).toObject().toVariantMap(); QStringList fields = record.keys(); QStringList values; QStringList::const_iterator fieldIterator = fields.constBegin(); while (fieldIterator != fields.constEnd()) { values << record.take(*fieldIterator).toString(); ++fieldIterator; } qDebug() << "INSERT INTO " + tableName + " (" + fields.join(',') + ")" + " VALUES ('" + values.join("','") + "')"; query.setQuery( QSqlQuery("INSERT INTO " + tableName + " (" + fields.join(',') + ")" + " VALUES ('" + values.join("','") + "')") ); qDebug() << "Errors?" << query.lastError(); ++ recordIterator; } ++i; } } query.submit(); } file.close(); return res; }