“ Parameter count mismatch“ QT读取sqlite中数据报错

解决前:
 

QByteArray SymbolManager::getSvgData(const QString &name) {
    QSqlQuery query(db);
    //query.prepare(QString("SELECT images_name FROM symbols WHERE name = '%1'").arg(name));
    query.prepare("SELECT images_name FROM images WHERE name = :name");
    query.bindValue(":name", name);
    if (!query.exec()) {
        qDebug() << "查询失败:" << query.lastError().text();
        qDebug() << "Query:" << query.lastQuery();
        qDebug() << "Values:" << query.boundValues();
        return QByteArray();
    }
    if (query.next()) {
        QByteArray data = query.value(0).toByteArray();
        qDebug() << "读取到的SVG数据:" << data;
        return data;
    } else {
        qDebug() << "没有找到名为" << name << "的SVG数据";
        return QByteArray();
    }
}

输出结果:

查询失败: " Parameter count mismatch"

Query: "SELECT images_name FROM images WHERE name = :name"

Values: QMap((":name", QVariant(QString, "五角星")))

SVG data Errow

问题:

query.exec()中没有给查询语句:
"SELECT images_name FROM images"

解决后:

QByteArray SymbolManager::getSvgData(const QString &name) {
    QSqlQuery query(db);
    //query.prepare(QString("SELECT images_name FROM symbols WHERE name = '%1'").arg(name));
    query.prepare("SELECT images_name FROM images WHERE name = :name");
    query.bindValue(":name", name);
    if (!query.exec("SELECT images_name FROM images")) {
        qDebug() << "查询失败:" << query.lastError().text();
        qDebug() << "Query:" << query.lastQuery();
        qDebug() << "Values:" << query.boundValues();
        return QByteArray();
    }
    if (query.next()) {
        QByteArray data = query.value(0).toByteArray();
        qDebug() << "读取到的SVG数据:" << data;
        return data;
    } else {
        qDebug() << "没有找到名为" << name << "的SVG数据";
        return QByteArray();
    }
}

输出:
 

读取到的SVG数据: "\xE5\x9C\x86\xE5\xBD\xA2"

SVG data: "\xE5\x9C\x86\xE5\xBD\xA2"

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值