zoukankan      html  css  js  c++  java
  • 如何在QML使用Sqlite数据库

    转载:http://thierry-xing.iteye.com/blog/1387855

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

  • 相关阅读:
    关注Imagine cup 2010Palantir智能公交系统
    Windows Media Player Application Sample Code Analysis (Mobile 6.5.3)
    Oracle客户端穿过防火墙连接服务器
    国内最大的IT门户天极网也采用了博客园的.TEXT程序
    基于深度优先的递归判断域用户是否是某个组的成员
    Oracle外部身份认证研究
    在Oracle中用存储过程发中文的HTML邮件
    cnblogs .text系统配置主要操作简介
    适合于初学者的一些小技巧
    我在cnblog .text基础上做的适应性修改
  • 原文地址:https://www.cnblogs.com/fuyanwen/p/3169013.html
Copyright © 2011-2022 走看看