• 如何在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");
        }
    }

  • 相关阅读:
    经典小故事
    清晨六问
    ui相关书籍
    ui设计书籍推荐
    生成器
    函数之装饰器
    函数之闭包
    函数之作用域的查找顺序
    函数之命名空间/名字空间/名称空间
    内置函数
  • 原文地址:https://www.cnblogs.com/fuyanwen/p/3169013.html
Copyright © 2020-2023  润新知