Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

SQLite database locked on localstorage example



  • Hi,

    Trying to use localstorage example, the database is locked with:

    function dbInit()
    {
        var db = LocalStorage.openDatabaseSync("Activity_Tracker_DB", "", "Track exercise", 1000000)
        try {
    
            db.transaction(function (tx) {
                tx.executeSql('CREATE TABLE IF NOT EXISTS trip_log (date text,trip_desc text,distance numeric)')
            })
    
        } catch (err) {
            console.log("Error creating table in database: " + err)
        };
    }
    
    function dbGetHandle()
    {
        try {
            var db = LocalStorage.openDatabaseSync("Activity_Tracker_DB", "",
                                                   "Track exercise", 1000000)
        } catch (err) {
            console.log("Error opening database: " + err)
        }
        return db
    }
    
    function dbInsert(Pdate, Pdesc, Pdistance)
    {
        var db = dbGetHandle()
        var rowid = 0;
        db.transaction(function (tx) {
            tx.executeSql('INSERT INTO trip_log VALUES(?, ?, ?)',
                          [Pdate, Pdesc, Pdistance])
            var result = tx.executeSql('SELECT last_insert_rowid()')
            rowid = result.insertId
        })
        return rowid;
    }
    
    function dbReadAll()
    {
        var db = dbGetHandle()
            db.transaction(function (tx) {var results = tx.executeSql(
                        'SELECT rowid,date,trip_desc,distance FROM trip_log order by rowid desc')
            for (var i = 0; i < results.rows.length; i++) {
                listModel.append({
                                     id: results.rows.item(i).rowid,
                                     checked: " ",
                                     date: results.rows.item(i).date,
                                     trip_desc: results.rows.item(i).trip_desc,
                                     distance: results.rows.item(i).distance
                                 })
            }
        })
    }
    

    How can I unlock the database?...
    May be with begin / commit but I don't know how.

    Thank you for your help
    Kind regards

    Philippe


  • Qt Champions 2019

    @filipdns said in SQLite database locked on localstorage example:

    How can I unlock the database?...

    Maybe you need to close it?



  • @jsulm hello, may be but how to close db in js?...

    Following documentation, js transactions are suppose to automatically close db.

    Kind regards


  • Qt Champions 2019

    @filipdns Was just an idea, I'm not an JS expert :-)



  • @jsulm oki thanks ;-)



  • @filipdns said in SQLite database locked on localstorage example:

    Following documentation, js transactions are suppose to automatically close db.

    Why do you work on DB in JavaScript/QML?
    I think it will made more sense to do the DB work on C++ side and implement a QML/C++ interface to access to the data.
    JS/QML is powerful to create/handle user interface, but to work with data C++ is the better choice!


Log in to reply