Я написал SQL-запрос, основанный на Qt assistant, и он говорит, что вы можете использовать метод 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());
вывод:
ВЫБЕРИТЕ ID, Row, Col ИЗ НЕКОТОРЫХ ГДЕ 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());
вывод:
ВЫБЕРИТЕ ID, Row, Col ИЗ НЕКОТОРЫХ ГДЕ Row =? AND Col =?
но когда я использую exec()
, обычно он работает отлично и заменяет соответствующие значения вместо "?".
есть какое-нибудь объяснение по этому поводу? или я должен использовать обычный exec ()?