首页 > 解决方案 > 如何将 QVariantMap 保存到 QSqlDatabase

问题描述

我已经有了一个可以使用的基础设施。有一个带有以下签名的插入函数:

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()));
}

这适用于迄今为止使用的所有插入,但现在我正在尝试插入 a QVariantMap(这是 的 typedef QMap<QString,QVariant>,实际上我正在尝试保存QMap<QString,int>类型):

insert(g_theKey, QVariant(m_theMap));

执行查询后,我收到以下错误:

在此处输入图像描述

我在 Qt 网站和这里都在寻找解决方案,但还没有找到可行的解决方案。

标签: c++qtqsqlqueryqsqldatabase

解决方案


推荐阅读