ak.*_*ak. 3 sql qt prepared-statement
我正在尝试确定使用QSqlQuery准备好的语句的正确方法.文档在这个问题上并不十分具体.
void select(const QSqlDatabase &database) {
QSqlQuery query(database);
query.prepare("SELECT * FROM theUniverse WHERE planet = :planet");
query.bindValue(":planet", "earth");
query.exec();
}
Run Code Online (Sandbox Code Playgroud)
那么这段代码会在连接中创建一个永久性的预备语句database吗?这个准备好的语句是否会在调用之间持续存在select(),即它会在函数返回并被释放时保存QSqlQuery query吗?
或者我应该在堆上创建QSqlQuery并反复使用相同的实例?
好的,我的想法是你必须在堆上创建QSqlQuery,准备查询并使用它执行以下操作:
QSqlQuery::bindValue(s)QSqlQuery::execQSqlQuery::[next|first|last|...]QSqlQuery::finish以下剪切对于在堆上创建,准备和检索查询很有用:
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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4716 次 |
| 最近记录: |