Ajouter un commentaire

arnaud_dupuis

Bonjour,
Je suis très très très loin d'être un expert en base de donnée mais selon moi le problème viens du code :

void FModifc::opmodifc()
{    QSqlQuery query;

    query.prepare("UPDATE Client SET Nom=? , Prenom=? ,  Adresse=? , NumTel=? , Email=? , WHERE idc = ?");

    query.bindValue(":Nom", nom->text());
    query.bindValue(":Prenom", prenom->text());
    query.bindValue(":Adresse", adresse->text());
    query.bindValue(":NumTel",telephone->text().toInt() );
    query.bindValue(":Email",email->text());
     query.addBindValue( id->text().toInt());
    query.exec();
    } 

Vous semblez faire un mélange entre plusieurs syntaxes de QSqlQuery.
Dans la doc suivante : http://doc.trolltech.com/4.4/qsqlquery.html
On trouve les exemples suivants :

     QSqlQuery query;
     query.prepare("INSERT INTO person (id, forename, surname) "
                   "VALUES (:id, :forename, :surname)");
     query.bindValue(":id", 1001);
     query.bindValue(":forename", "Bart");
     query.bindValue(":surname", "Simpson");
     query.exec();

Je pense que dans le cas de cette syntaxe la valeur liée avec bindValue() doit être décalré dans la requête. Dans votre cas vous essayez de lier une valeur à un placeholder inexistant.

Avez vous essayer d'appliquer cette syntaxe :

     QSqlQuery query;
     query.prepare("INSERT INTO person (id, forename, surname) "
                   "VALUES (?, ?, ?)");
     query.bindValue(0, 1001);
     query.bindValue(1, "Bart");
     query.bindValue(2, "Simpson");
     query.exec();

Et votre code deviendrai :

void FModifc::opmodifc()
{    QSqlQuery query;

    query.prepare("UPDATE Client SET Nom=? , Prenom=? ,  Adresse=? , NumTel=? , Email=? , WHERE idc = ?");

    query.bindValue(0, nom->text());
    query.bindValue(1, prenom->text());
    query.bindValue(2, adresse->text());
    query.bindValue(3,telephone->text().toInt() );
    query.bindValue(4,email->text());
    query.bindValue(5, id->text().toInt());
    query.exec();
    } 

Si vous n'avez pas tester cela, peut être devriez vous l'essayer.
De plus j'attire votre attention sur l'avertissement suivant de la documentation :

Quote:
Warning: You must load the SQL driver and open the connection before a QSqlQuery is created. Also, the connection must remain open while the query exists; otherwise, the behavior of QSqlQuery is undefined.

Avez vous vérifié que la connexion à la base de donnée est toujours vivante avant de lancer votre tentative de mise à jour ?

Arnaud Dupuis

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 M   M  III   SSS   DDD   V     V 
MM MM I S D D V V
M M M I SSS D D V V
M M I S D D V V
M M III SSSS DDD V