首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QSqlQuery预准备语句-正确用法

QSqlQuery预准备语句-正确用法
EN

Stack Overflow用户
提问于 2011-04-10 09:55:24
回答 1查看 5.2K关注 0票数 3

我正在尝试确定在QSqlQuery中使用预准备语句的正确方式。这些文档在这个主题上并不是很具体。

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

那么,这段代码会在连接database中创建一个永久的预准备语句吗?这条准备好的语句会在两次select()调用之间持续吗?也就是说,当函数返回并释放QSqlQuery query时,它会被保存吗?

或者我应该在堆上创建QSqlQuery,然后反复使用相同的实例?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-14 22:40:21

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

使用QSqlQuery::[next|first|last|...]

  • QSqlQuery::finish

  • rinse和repeat

重复数据

下面的代码片段对于在堆上创建、准备和检索查询非常有用:

代码语言:javascript
复制
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;
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5609245

复制
相关文章

相似问题

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