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. Saving to SQLite from text edit (help pwetty pwease)
Forum Updated to NodeBB v4.3 + New Features

Saving to SQLite from text edit (help pwetty pwease)

Scheduled Pinned Locked Moved Unsolved General and Desktop
28 Posts 4 Posters 9.3k Views 2 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.
  • S Scottish_Jason

    @p3c0

    QSqlError("5", "Unable to fetch row", "database is locked") "database is locked Unable to fetch row"

    I am unsure how to handle databases... so far I have been opening and closing them on each function since I can't call db.whatever if I have not initialized it, or the lack of it being a global variable. Is this my issue?

    p3c0P Offline
    p3c0P Offline
    p3c0
    Moderators
    wrote on last edited by
    #16

    @Scottish_Jason Don't do that. Instead open the connection only once. QSqlQuery will always use this default connection.

    157

    S 1 Reply Last reply
    1
    • p3c0P p3c0

      @Scottish_Jason Don't do that. Instead open the connection only once. QSqlQuery will always use this default connection.

      S Offline
      S Offline
      Scottish_Jason
      wrote on last edited by
      #17

      @p3c0

      When I take out the secondary QSqlQuery query(db) lines I always end up with query was not declared. How do I initialize the database per function? it has always confused me until now

      p3c0P 1 Reply Last reply
      0
      • S Scottish_Jason

        @p3c0

        When I take out the secondary QSqlQuery query(db) lines I always end up with query was not declared. How do I initialize the database per function? it has always confused me until now

        p3c0P Offline
        p3c0P Offline
        p3c0
        Moderators
        wrote on last edited by
        #18

        @Scottish_Jason Check this example specifically the createConnection method. Modify it as per your need.

        157

        S 1 Reply Last reply
        1
        • p3c0P p3c0

          @Scottish_Jason Check this example specifically the createConnection method. Modify it as per your need.

          S Offline
          S Offline
          Scottish_Jason
          wrote on last edited by
          #19

          @p3c0 Thanks, but what if I want to use the same database throughout many functions?
          how do I pass the db variable to open?

          p3c0P 1 Reply Last reply
          0
          • S Scottish_Jason

            @p3c0 Thanks, but what if I want to use the same database throughout many functions?
            how do I pass the db variable to open?

            p3c0P Offline
            p3c0P Offline
            p3c0
            Moderators
            wrote on last edited by
            #20

            @Scottish_Jason That is what is default connection. It is available across all functions or classes. Just use QSqlQuery directly or you can also try

            QSqlQuery query(QSqlDatabase::database())
            

            in this case it will return the default one.

            157

            S 1 Reply Last reply
            1
            • p3c0P p3c0

              @Scottish_Jason That is what is default connection. It is available across all functions or classes. Just use QSqlQuery directly or you can also try

              QSqlQuery query(QSqlDatabase::database())
              

              in this case it will return the default one.

              S Offline
              S Offline
              Scottish_Jason
              wrote on last edited by Scottish_Jason
              #21

              @p3c0

              well guys, thanks for the help but I think I really need to hang up the hat on this one... no matter how I try to initialize the database on a second function ( or lack of initilization) I either get database not open or duplicate database open that causes instability and crashes.

              I have been up all night trying to get it working so maybe I'm just tired but I'm starting to think this might be a bit over my head. Thanks for the help guys

              p3c0P 1 Reply Last reply
              0
              • S Scottish_Jason

                @p3c0

                well guys, thanks for the help but I think I really need to hang up the hat on this one... no matter how I try to initialize the database on a second function ( or lack of initilization) I either get database not open or duplicate database open that causes instability and crashes.

                I have been up all night trying to get it working so maybe I'm just tired but I'm starting to think this might be a bit over my head. Thanks for the help guys

                p3c0P Offline
                p3c0P Offline
                p3c0
                Moderators
                wrote on last edited by
                #22

                @Scottish_Jason I would suggest you to start from some simple examples keeping the earlier example code in mind ofcourse after some sleep. It works :)

                157

                S 1 Reply Last reply
                1
                • p3c0P p3c0

                  @Scottish_Jason I would suggest you to start from some simple examples keeping the earlier example code in mind ofcourse after some sleep. It works :)

                  S Offline
                  S Offline
                  Scottish_Jason
                  wrote on last edited by Scottish_Jason
                  #23

                  @p3c0

                  The strange thing is I am only implementing this block once in my loadsensors() function

                  QString dbname = "sensors";
                  QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
                  db.setDatabaseName("sensors.sqlite");
                  QSqlQuery query(QSqlDatabase::database());
                  

                  and then just QSqlQuery query; in the following functions but it still insists that the database is locked.
                  ( I need query defined so I can do the prepare's etc on each function )

                  I probably sound awfully silly right now but I'm kinda struggling coming from a php mainly background to this. Any hints down the correct path would be appreciated

                  1 Reply Last reply
                  0
                  • C Offline
                    C Offline
                    clochydd
                    wrote on last edited by clochydd
                    #24

                    @Scottish_Jason
                    Hi, what happens, if you declare your query that way:

                    QSqlQuery query;
                    ...
                    query = QSqlQuery(db);
                    
                    1 Reply Last reply
                    1
                    • C Offline
                      C Offline
                      clochydd
                      wrote on last edited by
                      #25

                      @Scottish_Jason

                      You are using DB Browser for SQLite parallel - is there a chance that it locks your database?

                      S 1 Reply Last reply
                      1
                      • C clochydd

                        @Scottish_Jason

                        You are using DB Browser for SQLite parallel - is there a chance that it locks your database?

                        S Offline
                        S Offline
                        Scottish_Jason
                        wrote on last edited by Scottish_Jason
                        #26

                        @clochydd said:

                        @Scottish_Jason

                        You are using DB Browser for SQLite parallel - is there a chance that it locks your database?

                        YAYYY thanks so much.
                        the browser itself was the culprit. Values are being updated now.

                        Thank you all +reps

                        one last question if I may:

                        instead of dropping the data into the 'FC-28' column I would like it to drop it under the name of whatever is selected on another table, any help in that direction?

                        query.prepare("UPDATE sensors SET pin1 = :dp, attached_gpio = :cp WHERE sensor_name = "selected item on sensor_table");
                        query.bindValue(":dp", dp1);
                        query.bindValue(":cp", cp1 );

                        p3c0P 1 Reply Last reply
                        0
                        • S Scottish_Jason

                          @clochydd said:

                          @Scottish_Jason

                          You are using DB Browser for SQLite parallel - is there a chance that it locks your database?

                          YAYYY thanks so much.
                          the browser itself was the culprit. Values are being updated now.

                          Thank you all +reps

                          one last question if I may:

                          instead of dropping the data into the 'FC-28' column I would like it to drop it under the name of whatever is selected on another table, any help in that direction?

                          query.prepare("UPDATE sensors SET pin1 = :dp, attached_gpio = :cp WHERE sensor_name = "selected item on sensor_table");
                          query.bindValue(":dp", dp1);
                          query.bindValue(":cp", cp1 );

                          p3c0P Offline
                          p3c0P Offline
                          p3c0
                          Moderators
                          wrote on last edited by
                          #27

                          @Scottish_Jason Do it in the same way which you did for the other placeholders viz. for eg. :dp and :cp in your example.

                          157

                          1 Reply Last reply
                          1
                          • C Offline
                            C Offline
                            clochydd
                            wrote on last edited by
                            #28

                            @Scottish_Jason
                            Hi Jason, may look like:

                            QString mySearch;
                            ...
                            mySearch = "FC-28";
                            query.prepare("UPDATE sensors SET pin1 = :dp, attached_gpio = :cp WHERE sensor_name = :search;");
                            query.bindValue(":dp", dp1);
                            query.bindValue(":cp", cp1 );
                            query.bindValue(":search", mySearch );
                            
                            1 Reply Last reply
                            0

                            • Login

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