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 :

Envoyer par QDataStream un QSqlQuery


Sujet :

Bases de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 47
    Par défaut Envoyer par QDataStream un QSqlQuery
    bonjour, dans le but d'un de mes programmes, j'aimerais envoyer un QSqlQuery par mon socket, or il n'y a pas d'operateur surcharger pour QSqlQuery dans QDataStream.

    quelqu'un aurais une solution a me proposer ^^' ?

    merci d'avance

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 752
    Par défaut
    Écrire toi-même l'opérateur en question ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QDataStream &operator<<(QDataStream &out, const Type &obj);
    QDataStream &operator>>(QDataStream &in, Type &obj);
    Il faut savoir ce que tu veux afficher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    friend QDataStream &operator<<(QDataStream &out, const Type &obj)
    {
        out << obj.ceQueTuVeuxAfficher();
        return out;
    }
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 47
    Par défaut
    je n'arrive pas a comprendre ce que tu entend par ce que je veux afficher ^^', tout ce que je veux faire passer par l'operateur de flux, c'est le contenue ma QSqlQuery .

    merci aussi de ta réponse =)

  4. #4
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 752
    Par défaut
    Tu dois savoir ce que tu veux afficher depuis ta requête : tu veux afficher un tableau ? Tu le mets en forme à cet endroit. Tu veux retourner du YAML ? Idem.

    Cette fonction va te servir à définir la manière d'afficher les informations. Tu dois donc savoir quelles infos afficher et la manière. Si Qt ne définit rien, tu dois le faire toi-même.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  5. #5
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 47
    Par défaut
    bah ce que je veux afficher c'est la QSqlQuery sous forme de tableau, je sais pas si c'est possible ><

  6. #6
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    C'est pour envoyer par socket et pas pour afficher, ce qui ne change pas grand chose en fait : au lieu de tout convertir en QString, tu dois convertir chaque élément de ton QSqlQuery en élément adéquate pour les envoyer. Comme tu ne sais pas forcement quel type et en quelle quantité tu dois envoyer (si tu as plusieurs requêtes différentes par exemple), alors tu dois également envoyer la taille et les formats.

    Par exemple, en pseudo code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    stream << nombre de résultats
    pour chaque résultat
       stream << nombre de champs
       pour chaque champ
          stream << type de champ
          switch type de champ
              un entier :
                   stream << entier (valeur de champ)
    ...
    etc. pour chaque type de données, chaque champ, chaque résultat

    Sinon, tu peux tout convertir en format texte (type cvs) avec la même méthode (en utilisant un QTextStream) et envoyer le tout

    C'est très lourd et vouloir tout envoyer, ce n'est pas la solution idéale, il vaut mieux faire le trie avant d'envoyer

  7. #7
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 752
    Par défaut
    Ce n'est pas possible en tant que tel, il faut développer ça toi-même. Par exemple :

    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
    friend QDataStream &operator<<(QDataStream &out, const Query &req)
    {
        out << "==========================\n"; 
        for (int i = 0; req.hasTitle(i); ++i)
        {
            out << req.getTitle() + " = ";
        }
        out << " ="; 
        out << "==========================\n"; 
        foreach(req.els(), el)
        {
            out << el.getContent(0) + " = ";
            // etc.
        }
        return out;
    }
    C'est un exemple, ça ne prend d'ailleurs pas de QSqlQuery en paramètre étant donné que je ne connais pas trop cette classe. Ça te montre le genre de truc à faire, la marche à suivre. C'est à faire toi-même, n'attend pas que Qt fasse tout pour toi, tout n'est pas prévu (et ce n'ets pas possible ici : tu ne vas pas forcément afficher tous les champs, etc.).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

Discussions similaires

  1. Réponses: 135
    Dernier message: 15/12/2006, 13h56
  2. Réponses: 2
    Dernier message: 30/11/2004, 02h36
  3. Sauvegarder automatiquement un mail envoyé par asp
    Par Immobilis dans le forum ASP
    Réponses: 7
    Dernier message: 27/10/2004, 14h11
  4. Envoyer par mail un document Rave Report
    Par Wilco dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/10/2004, 10h55
  5. Réponses: 4
    Dernier message: 18/09/2003, 10h06

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