QML使用Sqlite数据库

来源:互联网 发布:淘宝商品种类 编辑:程序博客网 时间:2024/05/05 00:14

在程序中,我们经常需要把一些数据持久化,比如一些设置信息和程序配置。QML并不能直接访问本地文件,但是可以通过

Offline Storage API访问本地Sqlite数据库,从而达到目的。

 

首先在qml目录下创建一个storage.js

//storage.js// 首先创建一个helper方法连接数据库function getDatabase() {     return openDatabaseSync("MyAppName", "1.0", "StorageDatabase", 100000);} // 程序打开时,初始化表function initialize() {    var db = getDatabase();    db.transaction(        function(tx) {            // 如果setting表不存在,则创建一个            // 如果表存在,则跳过此步            tx.executeSql('CREATE TABLE IF NOT EXISTS settings(setting TEXT UNIQUE, value TEXT)');  });} // 插入数据function setSetting(setting, value) {   var db = getDatabase();   var res = "";   db.transaction(function(tx) {        var rs = tx.executeSql('INSERT OR REPLACE INTO settings VALUES (?,?);', [setting,value]);              //console.log(rs.rowsAffected)              if (rs.rowsAffected > 0) {                res = "OK";              } else {                res = "Error";              }        }  );  return res;} // 获取数据function getSetting(setting) {   var db = getDatabase();   var res="";   db.transaction(function(tx) {     var rs = tx.executeSql('SELECT value FROM settings WHERE setting=?;', [setting]);     if (rs.rows.length > 0) {          res = rs.rows.item(0).value;     } else {         res = "Unknown";     }  })  return res}

 然后就可以在qml里调用了

import Qt 4.7//引入storage.js,起个别名Storage,以供后面使用import "storage.js" as StorageRectangle {    width: 360    height: 360    id: screen    Text {        id: textDisplay        anchors.centerIn: parent    }    Component.onCompleted: {        // 初始化数据库        Storage.initialize();        // 赋值        Storage.setSetting("mySetting","myValue");        //获取一个值,并把它写在textDisplay里        textDisplay.text = "The value of mySetting is:\n" + Storage.getSetting("mySetting");    }}



0 0
原创粉丝点击