qml中MySQL数据库_如何在QML使用Sqlite数据库

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

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值