【发布时间】:2011-08-12 06:06:34
【问题描述】:
我正在插入:
QSqlQuery myQuery(db);
myQuery.prepare("INSERT INTO mytable VALUES (:val1, :val2)");
myQuery.bindValue(":val1", 1);
myQuery.bindValue(":val2", 2);
myQuery.exec();
然后我需要获取执行的 SQL 查询以进行日志记录。
myQuery.executedQuery() 返回"INSERT INTO mytable VALUES (?, ?)"。
如何使用实际使用的绑定值执行查询?
【问题讨论】:
-
我想出了这个解决方法:
QString getLastExecutedQuery(const QSqlQuery& query) { QString str = query.lastQuery(); QMapIterator<QString, QVariant> it(query.boundValues()); while (it.hasNext()) { it.next(); str.replace(it.key(), it.value().toString()); } return str; } -
您应该删除评论并将其添加为答案。
-
我无法将其添加为答案。哎呀!无法提交您的答案,因为:新用户在 8 小时内无法回答自己的问题。请改用 cmets,或编辑您的问题。
-
您可以稍后添加,如果没有发布更好的解决方案,您也可以接受自己的答案。
-
到目前为止工作完美。谢谢!