gpt4 book ai didi

sql - QSqlQuery 准备语句 - 正确使用

转载 作者:行者123 更新时间:2023-12-01 11:57:29 25 4
gpt4 key购买 nike

我正在尝试确定将准备好的语句与 QSqlQuery 一起使用的正确方法。文档在这个主题上不是很具体。

void select(const QSqlDatabase &database) {
QSqlQuery query(database);
query.prepare("SELECT * FROM theUniverse WHERE planet = :planet");
query.bindValue(":planet", "earth");
query.exec();
}

那么这个片段会在连接数据库中创建一个永久的准备好的语句吗?这个准备好的语句是否会在调用 select() 之间持续存在,即它会在函数返回和 QSqlQuery query 被处理时保存吗?

或者我应该在堆上创建 QSqlQuery 并一遍又一遍地使用同一个实例吗?

最佳答案

好的,这个想法是您必须在堆上创建 QSqlQuery,准备查询并使用它执行以下操作:

  1. QSqlQuery::bindValue(s)
  2. QSqlQuery::exec
  3. 使用QSqlQuery::[next|first|last|...]读取数据
  4. QSqlQuery::finish
  5. 冲洗并重复

以下片段对于在堆上创建、准备和检索查询很有用:

QSqlDatabase database;
QMap<QString, QSqlQuery *> queries; //dont forget to delete them later!

QSqlQuery *prepareQuery(const QString &query)
{
QSqlQuery *ret = 0;
if (!queries.contains(query)) {
QSqlQuery *q = new QSqlQuery(database);
q->prepare(query);
queries[query] = ret = q;
} else {
ret = queries[query];
}
}
return ret;
}

关于sql - QSqlQuery 准备语句 - 正确使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5609245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com