Bienvenue sur le forum !

Si vous souhaitez rejoindre la communauté, cliquez sur l'un de ces boutons !

Qt : 5.10.1 - Qt Creator : 4.6.0 - Qt Installer : 3.0.4 - JOM : 1.1.2 - Qt Build suite : 1.7.0 - QBS : 1.11.0

[Qt3] requête update avec mysql

salut tt le monde
je galère avec une requête mysql, et j'arrive pas à trouver la solution
en fait voila , j travaille avec kdevelop, qt et mysql;
ma requête est de la forme:

float x;
QSqlQuery query;
query.exec("update base.table set base.table.champ = x where base.table.index=1");

le problème ici est avec le "x"; j'ai essayé tte les syntaxe et ca marche pas ; avez vous une idée comment on peut insérer une variable float dans un champs

si quelqu'un pourrai m'aider j serai très reconnaissant

Réponses

  • avec la methode statique QString::number() selon la precision souhaitee sur ton float, c'est possible :
    float x = 3.14;
    QSqlQuery query("UPDATE base.table SET base.table.champ = '" + QString::number(x) + "' WHERE base.table.index = 1");
    Voir la doc de QString pour jouer sur la precision et le format de ton float.
  • J'ai exactement le même probleme avec un int :

    int toto = 0;
    bdd.exec("UPDATE App SET Humain1 = '" + laSequence + "' WHERE id = '" + QString::number(toto) + "'");

    Le plus bizzare, c'est que j'arrive tout a fait a inserer des données avec ceci : '" + QString::number(toto) + "'

    Qu'en pensez vous ?
  • Salut,

    Si id est un entier, il ne faut *surtout* pas l'entourer de ' sinon, il est traité comme une chaîne.
  • Oui, c'est plutôt logique ...
    J'aurai dû trouver tout seul,
    Merci IrmatDen
  • L'utilisation des arguments est plus facile, en effet ca permet d'avoir une vue sur la requete plus confortable ( surtout quand elles sont tres longue :) ).

    exemple :
    QString SQL = "UPDATE TABLE SET CHAMPS = '%1' WHERE ID = %2"; // notez qu'il faut quoté les champs requierant des quotes
    SQL = SQL.arg( "new value" ).arg( 10 ); // arg gere tout type de donne, du string ou int, en passant par les float etc.
    QSqlQuery q;
    q.exec( SQL );
    Sinon il y a aussi les binding qui sont encore mieu adapté car implementé au niveau du server sql lui meme :
    QSqlQuery q;
    q.prepare( "UPDATE TABLE SET CHAMPS = :value WHERE ID = :id" ); // notez que le nom des parametres peuvent avoir un nom quelconque mais de preference ressemblant au nom du champ a mettre a jour
    query.bindValue( ":value", "new value" );
    query.bindValue( ":id", 10 );
    query.exec();
    Les bindings sont plus adaptés car utilisant des variants, il n'est pas neccessaire de quoter le nom des parametres dans la requete.

    P@sNox,
  • arg gere tout type de donne, du string ou int, en passant par les float etc
    Super pratique pour moi, qui ai toujours des problémes de conversions ...
    Merci
Connectez-vous ou Inscrivez-vous pour répondre.