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. QSqlQuery::value: not positioned on a valid record
Qt 6.11 is out! See what's new in the release blog

QSqlQuery::value: not positioned on a valid record

Scheduled Pinned Locked Moved Solved General and Desktop
15 Posts 4 Posters 7.9k Views 3 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.
  • O Ocascante

    @mrjj I did it, same error!!

    The code:

    if(db.open()){
    qDebug()<<"DATABASE OPEN";
    query.exec("SELECT COUNT(*) FROM Hours");
    ....

    Debug:

    DATABASE OPEN
    QSqlQuery::exec: database not open

    mrjjM Offline
    mrjjM Offline
    mrjj
    Lifetime Qt Champion
    wrote on last edited by
    #6

    @Ocascante
    Ok. so if same code works from hard drive, then it don't like ressources

    https://forum.qt.io/topic/3949/sqlite-database-in-project

    O 1 Reply Last reply
    0
    • mrjjM mrjj

      @Ocascante
      Ok. so if same code works from hard drive, then it don't like ressources

      https://forum.qt.io/topic/3949/sqlite-database-in-project

      O Offline
      O Offline
      Ocascante
      wrote on last edited by
      #7

      @mrjj Do you know any other way to include a database ( not to create ) in a project?
      Thanks again!

      mrjjM 1 Reply Last reply
      0
      • O Ocascante

        @mrjj Do you know any other way to include a database ( not to create ) in a project?
        Thanks again!

        mrjjM Offline
        mrjjM Offline
        mrjj
        Lifetime Qt Champion
        wrote on last edited by mrjj
        #8

        @Ocascante
        well you could have it as resource and then write it out to file.
        Then use the file.
        Since you will need tons of DLLS too and such. its it not an option to
        just include the db file?

        O 1 Reply Last reply
        0
        • mrjjM mrjj

          @Ocascante
          well you could have it as resource and then write it out to file.
          Then use the file.
          Since you will need tons of DLLS too and such. its it not an option to
          just include the db file?

          O Offline
          O Offline
          Ocascante
          wrote on last edited by
          #9

          @mrjj I did a test including a .csv resource , and then creating the table from this file. The problem is that 1500 records with 5 fields each one, takes more than 5 minutes loading to the database.

          mrjjM 1 Reply Last reply
          0
          • O Ocascante

            @mrjj I did a test including a .csv resource , and then creating the table from this file. The problem is that 1500 records with 5 fields each one, takes more than 5 minutes loading to the database.

            mrjjM Offline
            mrjjM Offline
            mrjj
            Lifetime Qt Champion
            wrote on last edited by
            #10

            @Ocascante
            ok. and the reason you want it in the resource, is to protect it from fiddling ?

            O 1 Reply Last reply
            0
            • SGaistS Offline
              SGaistS Offline
              SGaist
              Lifetime Qt Champion
              wrote on last edited by
              #11

              Hi and welcome to devnet,

              As @mrjj suggested, SQLite can't read database from Qt's resources, it's not written for that. However you can copy the database from your executable to the hard drive in one of the writable location provide provided by QStandardPaths

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

              1 Reply Last reply
              0
              • mrjjM mrjj

                @Ocascante
                ok. and the reason you want it in the resource, is to protect it from fiddling ?

                O Offline
                O Offline
                Ocascante
                wrote on last edited by
                #12

                @mrjj There are two main reasons:

                I want to build this application for android
                and to protect it from fiddling.

                1 Reply Last reply
                0
                • M Offline
                  M Offline
                  mcosta
                  wrote on last edited by
                  #13

                  Hi,

                  you could embed a database dump and import it each time you start the application

                  Once your problem is solved don't forget to:

                  • Mark the thread as SOLVED using the Topic Tool menu
                  • Vote up the answer(s) that helped you to solve the issue

                  You can embed images using (http://imgur.com/) or (http://postimage.org/)

                  O 1 Reply Last reply
                  0
                  • M mcosta

                    Hi,

                    you could embed a database dump and import it each time you start the application

                    O Offline
                    O Offline
                    Ocascante
                    wrote on last edited by
                    #14

                    @mcosta Hi,

                    I need import a new database file, only when there is an application update.

                    O 1 Reply Last reply
                    0
                    • O Ocascante

                      @mcosta Hi,

                      I need import a new database file, only when there is an application update.

                      O Offline
                      O Offline
                      Ocascante
                      wrote on last edited by
                      #15

                      @Ocascante Hi, thanks for your help. I found the solution using qt resources to pack my sqlite database, the code:

                      QString addin_path =QStandardPaths::writableLocation(QStandardPaths::DataLocation);

                      QDir dir(addin_path);
                      if (!dir.exists())
                          dir.mkpath(addin_path);
                      if (!dir.exists("addins"))
                          dir.mkdir("addins");
                      
                      dir.cd("addins");
                      addin_path = dir.absoluteFilePath("Rutasdb.sqlite");
                      qDebug()<<addin_path;
                      
                      if (QFile::exists(addin_path))
                          QFile::remove(addin_path);
                      
                      QFile::copy(":/Rutasdb.sqlite", addin_path);
                      
                      QSqlDatabase db;
                      db = QSqlDatabase::addDatabase("QSQLITE");
                      db.setConnectOptions(QLatin1String("QSQLITE_OPEN_READONLY"));
                      
                      db.setDatabaseName(addin_path);
                      db.open();
                      

                      Now i can upgrade the data every update.

                      Thanks again.

                      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