【发布时间】:2011-01-06 00:29:19
【问题描述】:
我已经编写了一个基于 Qt 助手的 SQL 查询,它说您可以使用 prepare() 方法而不是 exec() 然后您可以通过两个名为的方法传递您的参数:
@987654323 @和addbindvalue()
这是我的问题的 sn-p 代码:
Query->prepare("SELECT ID , Row , Col FROM sometable WHERE Row = :row AND Col = :col");
Query->bindValue(":row" , __Row);
Query->bindValue(":col" ,__Col);
Query->exec();
qDebug("%s" , Query->executedQuery().toStdString().c_str());
输出:
SELECT ID , Row , Col FROM sometable WHERE Row = ? AND Col = ?
而且我还使用了另一种建议的方式:
Query->prepare("SELECT ID , Row , Col FROM sometable WHERE Row = :row AND Col = :col");
Query->addBindValue(0 , __Row);
Query->addBindValue(1 ,__Col);
Query->exec();
qDebug("%s" , Query->executedQuery().toStdString().c_str());
输出:
SELECT ID , Row , Col FROM sometable WHERE Row = ? AND Col = ?
但是当我使用exec() 时,它通常可以完美运行,并且会替换相应的值而不是“?”。
对此有什么解释吗?还是应该使用普通的 exec()?
【问题讨论】:
-
无关紧要的小评论,代替
qDebug("%s",str.toStdString().c_str()),做qDebug() << str。