4

準備とバインド値に問題があります:(

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 を ? で変更しようとしました。bindValue で int 位置を使用しますが、うまくいきません。クエリが正常に実行されたため、正確なエラーを取得できませんでした。私は自分のプログラムで準備とbindValueをたくさん使用しましたが、問題はこのクラスだけにあります:/

4

1 に答える 1

4

それ以外の

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

あなたの準備文は読むべきです

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

于 2012-12-03T16:28:04.537 に答える