Подготовка Qt QSqlQuery и bindValue не работают

У меня проблема с prepare и bindValue :(

db.open();
QSqlQuery q;
    q.prepare("SELECT id_malade,nom,prenom FROM Malade WHERE nom LIKE %:p% OR prenom = %:f% ;");
    q.bindValue(":p",ui->lineEdit->text());
    q.bindValue(":f",ui->lineEdit->text());
    qDebug() << q.boundValue(0) << " " << q.boundValue(1);
    qDebug() << q.executedQuery().toStdString().c_str(); db.close();

вывод:

QVariant(QString, "zit")   QVariant(QString, "zit") 
SELECT id_malade,nom,prenom FROM Malade WHERE nom LIKE %?% OR prenom = %?% ;

Я пытался изменить :p и :f с помощью ? и используйте позиции int в bindValue, но не повезло. Запрос был выполнен успешно, поэтому я не смог получить точную ошибку. Я много использовал в своей программе prepare и bindValue, и она отлично работает, проблема только в этом классе:/


person Fourat Zitouni    schedule 28.10.2012    source источник


Ответы (1)


вместо

[...] nom LIKE %:p% OR prenom = %:f%

ваш оператор подготовки должен читать

[...] nom LIKE '%'||:p||'%' OR prenom = '%'||:f||'%'

person Elwood    schedule 03.12.2012
comment
Знаете ли вы, почему для выполнения QSqlQuery требуется время? Заранее спасибо! - person elgolondrino; 28.02.2014