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
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 :
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 :
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 :
Et votre code deviendrai :
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 :
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