Рейтинг:
12
Jochen Arndt
Вы должны создать передачу строки запроса num
в качестве параметра функции форматирования строк. Потому что QSqlQuery::prepare() | Qt SQL 5.10[^] ожидает, что QString
аргумент, это может быть сделано в одном утверждении:
qry.prepare(QString("SELECT * FROM ISSUEPASS WHERE PassID =%1").arg(num));
Но команды SQL никогда не должны использовать созданные текстовые строки, чтобы избежать SQL-инъекций (здесь это было бы нормально, потому что нет текстового параметра). Предпочтительным решением является использование параметризованных запросов:
qry.prepare("SELECT * FROM ISSUEPASS WHERE PassID =:passId");
qry.bindValue(":passId", num);
Member 13740197
Он работает нормально,но у меня возникла проблема, когда я обновляю параметр в той же строке.
query.prepare("обновить ISSUEPASS SET INTIME =? Где PassID = :passId");
запрос.addBindValue(Интайм);
query.bindValue(":passId", num);
Здесь intime-это переменная QString,но я получаю ошибку Sql "несоответствие количества параметров"
Не могли бы вы сказать мне, пожалуйста, решение.
Jochen Arndt
Вы смешиваете два метода привязки значений:
названы обязательными и позиционные параметры.
Это не поддерживается. Используйте один метод:
query.prepare("UPDATE ISSUEPASS SET INTIME =:intime WHERE PassID = :passId");
запрос.bindValue(":Интайм", Деливери, Интайм);
query.bindValue(":passId", num);
ОПЕРАЦИОННАЯ
query.prepare("обновить ISSUEPASS SET INTIME = ? Где PassID = ?);
запрос.addBindValue(Интайм);
запрос.addBindValue(чис);
Member 13740197
Большое вам спасибо за ваш ответ