加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

QML使用Sqlite数据库

发布时间:2020-12-12 19:35:50 所属栏目:百科 来源:网络整理
导读:在程序中,我们经常需要把一些数据持久化,比如一些设置信息和程序配置。QML并不能直接访问本地文件,但是可以通过 Offline Storage API访问本地Sqlite数据库,从而达到目的。 首先在qml目录下创建一个storage.js //storage.js// 首先创建一个helper方法连接

在程序中,我们经常需要把一些数据持久化,比如一些设置信息和程序配置。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 Storage
Rectangle {
    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");
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读