salut,
je veux realiser un update dans ma base de données, mais comme je debute en bdd et que je sais pas comment faire avec Qt j'ai essayé ce truc, mais aucun changement dans ma base:
#include "FModifc.h" FModifc::FModifc() { setFixedSize(350, 300); id = new QLineEdit(); nom = new QLineEdit(); prenom = new QLineEdit(); adresse = new QLineEdit(); telephone = new QLineEdit(); email = new QLineEdit(); valider = new QPushButton("&Valider", this); QFormLayout *defLayout = new QFormLayout; defLayout->addRow("&Numéro du client à modifier:", id); defLayout->addRow("&Nom :", nom); defLayout->addRow("&Prénom :", prenom); defLayout->addRow("&Adresse :", adresse); defLayout->addRow("&Numéro de téléphone :", telephone); defLayout->addRow("e_mail : ",email); QGroupBox *groupDefinition = new QGroupBox("Modifier les informations d'un client"); groupDefinition->setLayout(defLayout); groupDefinition->setGeometry(30, 20, 150, 10); QVBoxLayout *boutonsLayout = new QVBoxLayout; boutonsLayout->addWidget(groupDefinition); boutonsLayout->addWidget(valider); setLayout(boutonsLayout); connect( valider, SIGNAL(clicked()), this, SLOT(opmodifc()) ); connect(valider, SIGNAL(clicked()), this, SLOT(close())); } 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(); }
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