IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Discussion :

numRowsAffected et Size : retours incohérents


Sujet :

Bases de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 239
    Par défaut numRowsAffected et Size : retours incohérents
    Bonjour,

    J'ai des problèmes avec numRowsAffected et Size pour ma base de données SQLite (numRowAffected à un comportement erratique et Size me retournant quoi qu'il arrivent -1 ).

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    void OpenFiche::recherche()
    {
           listToReturn.clear();
    //premier état: fiche pro checked
         if(radiobouton->isChecked())
         {
              if(combobox->currentText() == "Par son code" && ligne->text() != NULL)
              {
                  qDebug() <<"fiche propri par son code";
                  listToReturn = recupValuePropriByCode(); //méthode en question
                  readyForReturn = true;
                  this->close();
     
              }
       ...
    voici la méthode où j'utilise numRowsAffected ou size

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    QList<QString> OpenFiche::recupValuePropriByCode()
    {
         QList<QString> list;
     
         QSqlQuery q;
         q.prepare("SELECT codeP, civilite, nomPropri, prenomPropri, dateNaissancePropri, "
                          "lieuNaissancePropri, nationalite, adressePropri, CPPropri, "
                          "villePropri, telDomPropri, telBurPropri, telPorPropri, mailPropri, tauxHonoraireHT, "
                          "assiette, periodeReglement, numMandat, entreLe, sortiLe, dernierRapportArreteLe, reglement, montantAcompte, "
                          "perioAcompte, dateDernierAcompte, montantDernierAcompte, banque, villeBanque, "
                          "codeBanque, codeGuichet, numCompte, cleRIB "
                   "FROM Proprietaire "
                   "WHERE codeP=:codeP");
         q.bindValue(":codeP", ligne->text().toInt());
         qDebug() <<ligne->text().toInt();
     
         if(!q.exec())
              qDebug(qPrintable(q.lastError().text()));
         else
         {
              qDebug() <<"La requete a sortie " << q.size() <<" ligne(s)"; //ici !
     
              while(q.next())
              {
                  for(int i=0; i<31; i++)
                  {
                      list.append(q.value(i).toString());
                  }
              }
         }
        return list;     
    }

  2. #2
    Membre très actif
    Avatar de FloMo
    Homme Profil pro
    Freelance iOS
    Inscrit en
    Juillet 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Freelance iOS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 726
    Par défaut
    size() concerne les requêtes "SELECT" et numRowsAffected() concerne les autres.

    size() n'est d'ailleurs pas implémenté comme fonctionnalité de QSqlite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bool QSqlDriver::hasFeature ( DriverFeature feature ) const

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 239
    Par défaut
    Merci pour cette info,

    J'avais un peu mis de coté le sujet d'ailleurs :s

  4. #4
    Membre confirmé Avatar de Legenyes
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 174
    Par défaut
    Comment fait on alors dans le cas de SQLite ?

  5. #5
    Membre très actif
    Avatar de FloMo
    Homme Profil pro
    Freelance iOS
    Inscrit en
    Juillet 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Freelance iOS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 726
    Par défaut
    Citation Envoyé par Legenyes Voir le message
    Comment fait on alors dans le cas de SQLite ?
    Par exemple, si tu veux vraiment compter les résultats :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int count = 0;
    QSqlQuery query("SELECT id FROM table");
    
    while(query.next())
        count++;
    
    qDebug() << "La requete a sorti " << count << " resultats.";

  6. #6
    Membre confirmé Avatar de Legenyes
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 174
    Par défaut
    merci pour la réponse,
    le but était de compter le nombre de t-uple de ma db pour créer un QTable de bonne dimension, sans devoir faire deux parcourt.

    j'ai finalement fais comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    while (query.next()) {
                tableJeu->setRowCount(++numRow);
                QTableWidgetItem *itemTableName = new QTableWidgetItem(query.value(1).toString(), QTableWidgetItem::UserType);
                QTableWidgetItem *itemTableBigBlind = new QTableWidgetItem(query.value(2).toString(), QTableWidgetItem::UserType);
                tableJeu->setItem(numRow, 0, itemTableName);
                tableJeu->setItem(numRow, 1, itemTableBigBlind);
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. Réponses: 2
    Dernier message: 20/09/2007, 19h12
  3. Réponses: 2
    Dernier message: 31/08/2007, 10h20
  4. Retour chariot dans un TMemo ?
    Par Vincent PETIT dans le forum C++Builder
    Réponses: 7
    Dernier message: 27/08/2002, 18h55
  5. URGENT: retour de string
    Par Pinggui dans le forum CORBA
    Réponses: 4
    Dernier message: 15/07/2002, 09h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo