我写了一个基于Qt助手的SQL查询,它说您可以使用prepare()
方法而不是exec()
,那么您可以通过帮助传递参数两种方法叫:
bindvalue()
和addbindvalue()
在C++中使用prepare()和bindvalue()Qt
这里是我的问题的代码片段:
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 =?和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,行,列FROM sometable其中row =?和Col =?
但是当我通常使用exec()
它通常会很好地工作,并会替换相应的值而不是“?”。
有没有解释?或者我应该使用普通的exec()?
小无关评论,( “%S”,str.toStdString()c_str())。 ','qDebug()<< str'。 – 2010-06-21 15:42:02