openDatabaseSync in Javascript in QT-Quick

openDatabaseSync in Javascript in QT-Quick

本文关键字:in QT-Quick Javascript openDatabaseSync      更新时间:2024-01-04

在main.qml中,我导入了一个javascript文件:

import "./js/noteDB.js" as NoteDB

在里面,我想用数据库来保存和加载状态,所以我调用

Component.onCompleted: {
    NoteDB.openDB()
}

其中openDB()在noteDB.js文件中定义:

function openDB() {
      print("noteDB.createDB()")
     _db = openDatabaseSync("StickyNotesDB", "1.0",
                            "The stickynotes Databes", 1000000);
     createNoteTable();
}

但我得到以下错误:ReferenceError:openDatabaseSync未定义*

PS:根据Qt Quick中的错误报告,我也尝试过这样做,而不是调用openDB():var _db=注释数据库。LocalStorage.openDatabaseSync("StickyNotesDB","1.0","TheStickynotesDatabes",1000000);但是给出了类似的错误:TypeError:无法调用未定义的方法"openDatabaseSync"

感谢任何能为我指明正确方向的人。

我已经用Qt 5.2进行了测试,当我有时,它似乎可以工作

 1  import QtQuick.LocalStorage 2.0
 2  import QtQuick 2.0
 3  import "noteDB.js" as NoteDB
 4
 5  Item {
 6          Component.onCompleted: {
 7                      NoteDB.openDB();
 8          }
 9  }

 1  function openDB() {
 2            print("noteDB.createDB()")
 3            var _db = LocalStorage.openDatabaseSync("StickyNotesDB", "1.0",
 4                                             "The stickynotes Databes", 1000000);
 5  }

因此,我建议您编写LocalStorage.openDatabaseSync并仔细检查import QtQuick.LocalStorage 2.0是否存在。

尝试以下代码:

.import QtQuick.LocalStorage 2.0 as Sql
...
var _db = Sql.LocalStorage.openDatabaseSync("StickyNotesDB", "1.0",
                                          "The stickynotes Databes", 1000000);
import QtQuick 2.0
import QtQuick.LocalStorage 2.0 as Sql
Rectangle {
    color: "white"
    width: 200
    height: 100
Text {
    text: "?"
    anchors.horizontalCenter: parent.horizontalCenter
    function findGreetings() {
        var db = Sql.LocalStorage.openDatabaseSync("QDeclarativeExampleDB", "1.0", "The Example QML SQL!", 1000000);
        db.transaction(
            function(tx) {
                // Create the database if it doesn't already exist
                tx.executeSql('CREATE TABLE IF NOT EXISTS Greeting(salutation TEXT, salutee TEXT)');
                // Add (another) greeting row
                tx.executeSql('INSERT INTO Greeting VALUES(?, ?)', [ 'hello', 'world' ]);
                // Show all added greetings
                var rs = tx.executeSql('SELECT * FROM Greeting');
                var r = ""
                for (var i = 0; i < rs.rows.length; i++) {
                    r += rs.rows.item(i).salutation + ", " + rs.rows.item(i).salutee + "'n"
                }
                text = r
            }
        )
    }
    Component.onCompleted: findGreetings()
}

}