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 :

Erreur : "No query Unable to fetch row"


Sujet :

Bases de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    décembre 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : décembre 2019
    Messages : 16
    Points : 16
    Points
    16
    Par défaut Erreur : "No query Unable to fetch row"
    Bonjour,
    Je bute depuis un bout de moment sur l'utilisation de 'QSqlQuery'

    bien voila 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
    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
    42
    43
     
    #include <QApplication>
    #include <QWidget>
    #include <QString>
     
    #include <QSqlDriver>
    #include <QSqlDatabase>
    #include <QSqlQuery>
    #include <QSqlError>
     
    #include <QDebug>
     
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
        QString mTexte;
     
          // Creation d'une connection
            QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
     
          // Ouvrir la base de données
            db.setDatabaseName("./main.db");
            if(!db.open())
              {qDebug()<<"Erreur1: " << db.lastError() ;}
            else
              {qDebug()<<"Result1: BDonnees ouverte" ;}
     
          // Requete
              QSqlQuery query(db);
              query.prepare("select model from deviceTable");// Champ 'model' de la table main!deviceTable
              query.exec();
              if(!query.exec())
                {qDebug()<<"Erreur2: " << query.lastError().text();}
              else
                {qDebug() << "Result2 : " + mTexte << query.value(0).toInt();}
     
          //
            db.commit();
            db.close();
     
         //
        return app.exec();
    }
    Dans l'onglet 'Application Output', j'ai :

    19:38:31: Starting F:/CetQt/Exemples/QSqlite/debug/QSqlite.exe...
    Result1: BDonnees ouverte
    Erreur2: "No query Unable to fetch row"
    19:38:34: F:/CetQt/Exemples/QSqlite/debug/QSqlite.exe crashed.
    Je n'arrive pas à trouver la bonne syntaxe pour exécuter ma requête.
    Pouvez m'aider?
    Merci et bonne fin de journée.

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    août 2008
    Messages
    26 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2008
    Messages : 26 365
    Points : 187 897
    Points
    187 897
    Par défaut


    Que donne query.executedQuery() ? Cette requête fonctionne-t-elle sur ta base de données quand tu y accèdes en direct ?

    Que renvoie query.prepare ?

    As-tu testé sans requête préparée, vu que tu n'as aucun argument ? Par exemple avec un db.exec() ?
    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 à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    décembre 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : décembre 2019
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    Bonjour et merci pour ta réponse,

    Honnêtement, je ne puis répondre à tes questions puisque je débute.

    Seulement voila à ce que je suis arrivé après moult tâtonnement:

    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
     
    #include <QApplication>
    #include <QWidget>
    #include <QString>
     
    #include <QSqlDriver>
    #include <QSqlDatabase>
    #include <QSqlQuery>
    #include <QSqlError>
     
    #include <QDebug>
     
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
          // Creation d'une connection
            QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
          // Ouvrir la base de données
            db.setDatabaseName("./main.db");
            if(!db.open())
              {qDebug()<<"Erreur1: " << db.lastError() ;}
            else
              {qDebug()<<"BDonnees main.db Ouverte";}
          // Requete
              QSqlQuery query(db);
              if(!query.exec("select id, model, sn from deviceTable where id = 2"))
                {qDebug()<<"Erreur2: " << query.lastError().text();}
              else
                {
                  query.first();
                  //Afficher le 1° champ et le 3° seulement du 2° enregistrement
                  qDebug() << "Resultat: " << query.value(0).toInt() << ", " << query.value(2).toString();
                }
          //
            db.commit();
            db.close();
         //
        return app.exec();
    }
    Et dans l'onglet 'Application Output', j'ai :

    16:08:05: Starting F:/CetQt/Exemples/QSqlite/debug/QSqlite.exe...
    Result1: BDonnees ouverte
    Resultat: 2 , "B030487"
    16:15:14: F:/CetQt/Exemples/QSqlite/debug/QSqlite.exe crashed.
    En fait , j'ai supprimer les lignes :
    1- " query.prepare("select model from deviceTable");// Champ 'model' de la table main!deviceTable" => pour les requêtes préparées que je n'utilise pas pour l'instant.
    2- "query.exec();".
    3- La réécriture de la requête est peut être aussi pour beaucoup au vue du résultat(ajout de where dans la requête).

    Je me lance dans l'affichage de l'ensemble des enregistrements en utilisant la boucle 'While...'.

    Merci pour ta réponse et Bonne journée.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/09/2014, 22h51
  2. Database is locked, unable to fetch row
    Par theprogrammeur dans le forum Bases de données
    Réponses: 1
    Dernier message: 06/11/2011, 01h56
  3. Export requete texte -> Excel : erreur quote
    Par Sam 069 dans le forum VBA Access
    Réponses: 1
    Dernier message: 18/07/2007, 16h27
  4. erreur de la query
    Par Daniela dans le forum Access
    Réponses: 1
    Dernier message: 06/12/2006, 11h24
  5. Modification d'un texte dans une fenetre "d'erreur"
    Par PAUL87 dans le forum Access
    Réponses: 8
    Dernier message: 21/10/2005, 14h12

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