Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Counting records in a QSqLite db
Forum Updated to NodeBB v4.3 + New Features

Counting records in a QSqLite db

Scheduled Pinned Locked Moved Solved General and Desktop
15 Posts 5 Posters 5.3k Views 4 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • SGaistS Offline
    SGaistS Offline
    SGaist
    Lifetime Qt Champion
    wrote on last edited by
    #5

    Hi,

    Because that's not how you use a QSqlQuery object.

    A select count should be handled the same as classic select call. You'll just have one result which will contain the number of rows.

    Interested in AI ? www.idiap.ch
    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

    G 1 Reply Last reply
    1
    • SGaistS SGaist

      Hi,

      Because that's not how you use a QSqlQuery object.

      A select count should be handled the same as classic select call. You'll just have one result which will contain the number of rows.

      G Offline
      G Offline
      gabor53
      wrote on last edited by
      #6

      @SGaist
      Hi,
      Is this supposed to work on QSqLite?

      Venkatesh VV 1 Reply Last reply
      0
      • G gabor53

        @SGaist
        Hi,
        Is this supposed to work on QSqLite?

        Venkatesh VV Offline
        Venkatesh VV Offline
        Venkatesh V
        wrote on last edited by
        #7

        @gabor53
        Hi,

        int recCount = query_fix.prepare("SELECT COUNT(*) FROM Items");
        query_fix.exec();

        G 1 Reply Last reply
        1
        • SGaistS Offline
          SGaistS Offline
          SGaist
          Lifetime Qt Champion
          wrote on last edited by
          #8

          @gabor53 What is supposed to work ?

          Interested in AI ? www.idiap.ch
          Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

          G 1 Reply Last reply
          0
          • SGaistS SGaist

            @gabor53 What is supposed to work ?

            G Offline
            G Offline
            gabor53
            wrote on last edited by
            #9

            @SGaist
            select count with QSqLite.

            1 Reply Last reply
            0
            • Venkatesh VV Venkatesh V

              @gabor53
              Hi,

              int recCount = query_fix.prepare("SELECT COUNT(*) FROM Items");
              query_fix.exec();

              G Offline
              G Offline
              gabor53
              wrote on last edited by gabor53
              #10

              @Venkatesh-V
              This returns 1, but there are 7 records in the db. Any idea why?

               int recNum;
                recNum = query_fix.prepare ("SELECT COUNT(*) FROM Items");
                query_fix.exec ();
              
                qDebug() << "Record count in fixdb: " << recNum;
              
              mrjjM 1 Reply Last reply
              0
              • G gabor53

                @Venkatesh-V
                This returns 1, but there are 7 records in the db. Any idea why?

                 int recNum;
                  recNum = query_fix.prepare ("SELECT COUNT(*) FROM Items");
                  query_fix.exec ();
                
                  qDebug() << "Record count in fixdb: " << recNum;
                
                mrjjM Offline
                mrjjM Offline
                mrjj
                Lifetime Qt Champion
                wrote on last edited by mrjj
                #11

                hi
                If i show you how the function is defined, can you then guess why its 1 ?
                bool QSqlQuery::prepare(const QString & query)

                I will give you a hint and say that
                query_fix.exec ();
                must be used.
                Also the value of true is often 1.

                G 1 Reply Last reply
                1
                • mrjjM mrjj

                  hi
                  If i show you how the function is defined, can you then guess why its 1 ?
                  bool QSqlQuery::prepare(const QString & query)

                  I will give you a hint and say that
                  query_fix.exec ();
                  must be used.
                  Also the value of true is often 1.

                  G Offline
                  G Offline
                  gabor53
                  wrote on last edited by
                  #12

                  @mrjj
                  Thank you.Now I understand why it is 1. How can I get around it?

                  Venkatesh VV 1 Reply Last reply
                  0
                  • G gabor53

                    @mrjj
                    Thank you.Now I understand why it is 1. How can I get around it?

                    Venkatesh VV Offline
                    Venkatesh VV Offline
                    Venkatesh V
                    wrote on last edited by
                    #13

                    @gabor53

                    Hi,
                    Try this,

                    int recNum =0;
                    query_fix.prepare ("SELECT * FROM Items");
                    if( query_fix.exec ()){
                    while( query.next() )
                    {
                    recNum ++;
                    }
                    }
                    qDebug() << "Record count in fixdb: " << recNum;

                    1 Reply Last reply
                    3
                    • Venkatesh VV Offline
                      Venkatesh VV Offline
                      Venkatesh V
                      wrote on last edited by
                      #14

                      Or you can also use this,

                      QSqlQuery q;
                      q.prepare("SELECT COUNT (*) FROM TableName");
                      q.exec();
                      int rows= 0;
                      if (q.next()) {
                      rows= q.value(0).toInt();
                      }

                      G 1 Reply Last reply
                      5
                      • Venkatesh VV Venkatesh V

                        Or you can also use this,

                        QSqlQuery q;
                        q.prepare("SELECT COUNT (*) FROM TableName");
                        q.exec();
                        int rows= 0;
                        if (q.next()) {
                        rows= q.value(0).toInt();
                        }

                        G Offline
                        G Offline
                        gabor53
                        wrote on last edited by
                        #15

                        @Venkatesh-V
                        This worked.
                        Thank you.

                        1 Reply Last reply
                        1

                        • Login

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Categories
                        • Recent
                        • Tags
                        • Popular
                        • Users
                        • Groups
                        • Search
                        • Get Qt Extensions
                        • Unsolved