Невозможно удалить базу данных SQLite, используя Qt с транзакцией QML - PullRequest
0 голосов
/ 11 марта 2020

Пытаясь использовать пример localstorage в Qt 5.14, база данных заблокирована и не может быть удалена.

в документации Qt говорится: «Соединения с базой данных автоматически закрываются во время Javascript сбора мусора».

но это не так ...

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
                         })
        }
    })
}

Как разблокировать / закрыть базу данных?

...