我已经编写了一个基于 Qt 助手的 SQL 查询,它说您可以使用该prepare()
方法而不是exec()
然后您可以通过两个名为的方法传递参数:
bindvalue()
和addbindvalue()
这是我的问题的代码段:
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 = ? 和科尔 = ?
而且我还使用了另一种建议的方式:
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 = ? 和科尔 = ?
但是当我exec()
正常使用时,它可以完美运行,并且会替换相应的值而不是“?”。
对此有什么解释吗?还是我应该使用普通的 exec()?