несоответствие количества параметров в параметризованном запросе
Я использую довольно много параметризованных запросов в моем коде по соображениям производительности. Короче говоря, некоторые из них работают, некоторые нет.
Я инициализирую запрос во время создания моей оболочки базы данных следующим образом:
QString querystring = QString("SELECT somevalue FROM sometable "
"WHERE one_feature = :one_feature AND other_feature = :other_feature ");
myquery = QSqlQuery(db);
myquery.setForwardOnly(true);
myquery.prepare(querystring);
myquery
этоQSqlQuery
переменная-член моей оболочки базы данных. Позже, в функции, которая хочет использовать этот запрос, я делаю что-то вроде
int db_wrapper::fetch_some_value (int arg1, int arg2) {
myquery.clear();
myquery.bindValue(":one_feature", arg1);
myquery.bindValue(":other_feature", arg2);
qDebug() << "Bound values: " << myquery.boundValues();
bool OK = myquery.exec();
if (!OK) {
int number = myquery.lastError().number();
qDebug() << "db error " << number;
qDebug() << "db error " << myquery.lastError().text();
#ifdef USE_EXCEPTIONS
throw "Could not fetch some_value!";
#endif
}
// process data...
}
Я всегда получаю одно и то же сообщение об ошибке / вывод:
Bound values: QMap((":one_feature", QVariant(int, 1) ) ( ":other_feature" , QVariant(int, 1) ) )
db error -1
db error " Parameter count mismatch"
terminate called after throwing an instance of 'char const*'
Исключение не удивительно, но несоответствие количества параметров. Призыв кboundValues
на самом деле показывает правильные значения и все, но я получаю это сообщение об ошибке. У меня есть похожие запросы, которые работают просто отлично.
Я попытался заменить значения позиционного связывания, переименовал заполнители, использовал?
и значения позиционного связывания, все безрезультатно. У кого-нибудь есть идея, в чем может быть проблема?
Я использую Qt 4.7.3 и SQLite 3.7.4-2