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 :

SQlite : un SELECT * ne renvoie jamais rien


Sujet :

Bases de données

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2020
    Messages : 2
    Points : 3
    Points
    3
    Par défaut SQlite : un SELECT * ne renvoie jamais rien
    Bonjour a tous

    Avant toutes choses, excusez moi ce titre peut parlant, mais je n'étais pas inspiré.

    Je travaille sur une application mono utilisateur et j'ai besoin d'une base de donnée. Je me suis donc tourné vers SQLite. J'ai construit ma base de données avec l'utilitaire DB Browser SQLITE. Or, quand je veut l'utiliser dans mon code QT, elle ne me renvoie jamais rien. JE suis sous debian 10, avec QTCreator installé. Je n'ai aucune erreur de compilation.

    Forme de la base de données :

    Nom : bdd.PNG
Affichages : 179
Taille : 15,5 Ko

    Le code qui se connecte a la bdd :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include <QtSql/QSqlDatabase>
    #include <QtSql/QSqlQuery>
    #include <QtSql/QtSql>
    #include <QtSql/QSqlDriver>
    #include <QtSql/QSqlDriverCreator>
    #include <QtSql/QSqlError>
    #include <QtSql/QSqlRecord>
     
    QSqlDatabase bdd = QSqlDatabase::addDatabase("QSQLITE");
    bdd.setDatabaseName("./basededonnees.db");
    Après ca je teste son ouverture et si elle est bien ouverte je fait un select :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    resultat = bdd.exec("SELECT * FROM Client");
    je teste le résultat de exec et je met le résultat dans un QVector. Mais le problème, est que quand je fait cela, il ne renvoie rien, jamais.

    Il faut impérativement que j'envoie une requete de type "INSERT INTO" pour que mes valeurs apparaissent.

    Je voudrais savoir, si c'est normal de faire d'abord un INSERT INTO ou si on peut directement commencer par un "SELECT".

    Merci d'avance pour vos réponses,

    en espérant être assez clair dans mes esplications.

  2. #2
    vec
    vec est déconnecté
    Futur Membre du Club
    Homme Profil pro
    Responsable service informatique en retraite depuis oct 2009
    Inscrit en
    Février 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable service informatique en retraite depuis oct 2009
    Secteur : Santé

    Informations forums :
    Inscription : Février 2004
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Lire une base SQLite avec Qt...
    Bonjour,
    Je viens justement de m'intéresser au sujet (mon épouse ayant eu quelques soucis avec une base de données généalogiques au format sqlite3).

    Voilà comment j'ai procédé:
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
         QFile base(m_Base);
         if (base.open(QIODevice::ReadOnly | QIODevice::Text)) //ouvre le fichier sqlite
         {
             db = QSqlDatabase::addDatabase("QSQLITE");//driver SQLITE pour base sqlite3
             db.setDatabaseName(m_Base);
             if (db.open())
             {
                 QStringList list = db.tables(QSql::Tables);//éventuellement QSql::AllTables pour avoir toutes les tables
                 status(QString("Nbre de tables: %1").arg(list.size()));
     
                 qSort(list);//tri alpha
                 ui->tText->append(tList[i]);//liste les tables dans une fenêtre texte
     
                //lister les champs d'une table donnée
                QSqlRecord rec = db.record (table);
                int nField =rec.count();//nombre de champs
                QStringList list;//liste des champs de la table en cours
                for (int i=0;i<nField;i++)
                   list << rec.fieldName(i);
     
                 //lister les enregistrements de la table
     
                 QSqlQuery q;
                 QString cmd("SELECT * FROM " + table  );//demande tous les enregistrements de la table
                 bool flag = q.exec(cmd);//retourne vrai si la commande est exécutée
                 QSqlError err = q.lastError();//pour avoir une idée de l'erreur sinon
     
                 while (q.next()) //tous les enregistrements
                 {
                       QString line;
                       for (int i=0;i<list.size();i++)//tous les champs
                       {
                           int fNum = q.record().indexOf(list[i]);//index du champ i
                           line += QString("%1  ").arg(q.value(fNum).toString());//donnée du champ i
                           qApp->processEvents();
                        }
                        ui->tText->append(line);//affiche les champs de l'enregistrement et passe au suivant
                  }
             }
       }
    Dans ton cas, il faut peupler le QVector avec chacune des données de champs récupérées...
    vec ;-)

Discussions similaires

  1. [SQL] Problème avec SELECT COUNT(*)
    Par jpascal dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/11/2006, 12h37
  2. [MySQL] [BDD] Problème avec SELECT "dynamique"
    Par Vecine dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 29/03/2006, 11h11
  3. Problème avec select sous MYSQL
    Par Thomad dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/01/2006, 11h26
  4. problème avec select sur onchange
    Par Kerod dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 01/12/2005, 14h05
  5. Problème avec select top
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 10/12/2004, 14h55

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