如何在QML使用Sqlite数据库
程序员文章站
2022-05-31 22:05:41
...
在程序中,我们经常需要把一些数据持久化,比如一些设置信息和程序配置。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"); } }
推荐阅读
-
Android Studio 通过一个登录功能介绍SQLite数据库的使用
-
android之存储篇_SQLite数据库_让你彻底学会SQLite的使用
-
Python 使用数据库(SQLite)
-
python自学 (四)第四章 操作数据库 【数据编程接口、使用SQLite】
-
iOS开发中使用FMDB来使程序连接SQLite数据库
-
AndroidStudio制作个人资料界面模块以及SQLite数据库的使用
-
如何在django中使用mysql数据库进行操作?
-
SQLite Database Browser数据库查看器图文使用教程
-
AndroidStudio制作个人资料界面模块以及SQLite数据库的使用
-
如何在PHP中使用Oracle数据库(4)