首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么调用QSqlQuery::prepare函数后mysql中没有prepare语句

为什么调用QSqlQuery::prepare函数后mysql中没有prepare语句
EN

Stack Overflow用户
提问于 2021-01-28 20:57:03
回答 1查看 32关注 0票数 0

下面是我的测试代码:

代码语言:javascript
复制
    //Get a database connection of type MySQL from my function.
    auto pdatabase = INDBPOOL->GetConnection();
    if (pdatabase == Q_NULLPTR)
        return;

    QString sql = "select * from task where task.taskId = ? and task.isDeleted = 0";

    //p_query is a member of class database connection. It's QSqlQuery class.
    bool ok = pdatabase->p_query->prepare(sql);
    if (!ok) {
        qDebug() << "prepare error!";
        return;
    }
    pdatabase->p_query->bindValue(0,1);
    pdatabase->p_query->exec();
    if (!pdatabase->p_query->isActive()) {
        qDebug() << "exec error";
    }

    pdatabase->p_query->exec("SELECT * FROM `performance_schema`.prepared_statements_instances");
    if (!pdatabase->p_query->isActive()) {
        qDebug() << "exec error";
    }

    while (pdatabase->p_query->next()) {
        qDebug() << pdatabase->p_query->value("SQL_TEXT").toString();
        qDebug() << pdatabase->p_query->value("STATEMENT_NAME").toString();
        qDebug() << pdatabase->p_query->value("COUNT_EXECUTE").toInt();
    }

    INDBPOOL->ReleaseConnection(pdatabase);
    return;
}

我可以保证代码中的所有performance_schema语句都能成功运行,但是表SQL.SQL.prepared_statements_instances中没有数据。这意味着在我调用QSqlQuery类的prepare函数后,mysql数据库中没有准备好的语句。我的Qt版本是5.12.9,MySQL数据库版本是8.0。我也不知道原因。谁知道细节,请告诉我。非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2021-01-30 10:01:28

类QSqlQuery准备或执行一条语句,它将首先释放查询先前创建的准备好的语句。因此,当我使用相同的数据库连接在表performance_schema.prepared_statements_instances,中搜索已准备好的语句info时,它已经被删除了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65937551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档