У меня уже есть инфраструктура для работы. Существует функция вставки со следующей сигнатурой:
insert(const QString& key, const QVariant& value)
В рамках функции готовится QSqlQuery
:
QSqlQuery query{mySqlDatabase};
QString sql = "INSERT INTO my_table(key, value) VALUES (:key, :value)"
query.prepare(sql);
query.bindValue(ENC(":key"), key);
query.bindValue(ENC(":value"), value.toString());
if (!query.exec()) {
const auto error = q2.lastError();
throw std::exception(QString("failed to insert: %1")).arg(error.text()));
}
Это работает для всех вставок, которые использовались до сих пор, но теперь я пытаюсь вставить QVariantMap
(который является typedef для QMap<QString,QVariant>
, на самом деле я пытаюсь сохранить тип QMap<QString,int>
):
insert(g_theKey, QVariant(m_theMap));
При выполнении запроса я получаю следующую ошибку:
Я искал решения как на веб-сайте Qt, так и здесь, но не нашел рабочего решения.