Несоответствие количества параметров Qt значениям QSQL и Bind

#c #qt #qsqlquery

#c #qt #qsqlquery

Вопрос:

В настоящее время я сталкиваюсь с ошибкой, из-за которой я получаю «Несоответствие количества параметров» из query.lastError, мои значения привязки верны (я их тестировал).

Мой запрос:

 QSqlQuery query(DBT);
query.prepare("SELECT Foto, Nombre, Apellido1, Apellido2, Curso, Grupo, FotoHuella FROM usuarios WHERE Nombre=:nombre1 OR Apellido1=:apellido1 OR Apellido2=:apellido2 OR Curso=:curso1 OR Grupo=:grupo1");
    query.bindValue(":nombre1", nombre, QSql::Out);
    query.bindValue(":apellido1", apellido1, QSql::Out);
    query.bindValue(":apellido2", apellido2, QSql::Out);
    query.bindValue(":curso1", curso, QSql::Out);
    query.bindValue(":grupo1", grupo, QSql::Out);
query.exec();
  

На случай, если вам интересно, вот где я настраиваю базу данных:

 QSqlDatabase DBT=QSqlDatabase::addDatabase("QSQLITE");
DBT.setDatabaseName("/home/pi/FoodCircleDBT.db");
DBT.open();
  

Заранее спасибо.

Комментарии:

1. Согласно этой QSql::ParamType ссылке , значение QSql::Out равно «Параметр bind используется для получения данных из базы данных». Ваши параметры предназначены не для этого. Попробуйте использовать QSql::In вместо этого (который используется по умолчанию для bindValue ).

2. Точно, или просто не используйте 3-й параметр вообще.

Ответ №1:

Решение для меня: на самом деле все, что касается кода, работало отлично, но каким-то образом моя схема базы данных сошла с ума, когда я отредактировал ее с помощью программы для баз данных. Поэтому, если вы столкнулись с этим, я рекомендую вам открыть командную строку и проверить вашу схему.