如何解决为什么调用QSqlQuery::prepare函数后mysql中没有prepare语句
这是我的测试代码:
//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;
}
我可以保证代码中所有的sql语句都运行成功,但是表performance_schema
.prepared_statements_instances
中没有数据。这意味着在我调用 QsqlQuery 类的函数 prepare 后,MysqL 数据库中没有准备好的语句。我的 Qt 版本是 5.12.9,MysqL 数据库版本是 8.0。
我不知道为什么。谁知道详情请告诉我。非常感谢!
解决方法
类 QSqlQuery 准备或执行一个语句,它将首先释放查询之前创建的准备好的语句。所以当我使用同一个数据库连接在表performance_schema.prepared_statements_instances中搜索prepared statement信息时,它已经被删除了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。