Qml 数据库

QML 除了在 c++对象中使用 QSQlDatabase 来操作数据库之外,还可以使用 QtQuick.LocalStorage 来创建一个 QML专用的数据库。

在这里插入图片描述

Qt Quick Local Storage QML Types

使用步骤如下:

//设定数据库存放路径。  下面是 在二进制文件的当前文件下,创建一个 Database 文件夹
1. QQmlEngine::setOfflineStoragePath("./");   

//创建 js 文件,写入对数据库的操作。 包含 打开数据库,
2.LocalStorage.openDatabaseSync() 打开数据库

3. 在qml 文件中LocalStorage
import QtQuick.LocalStorage 2.15  

4. 引入js 文件 import "../../database.js" as DB  

5. 在 qml 文件中使用 
var db;

function initDatabase() {
	db = LocalStorage.openDatabaseSync("data","1.0","define machine cnc basic information",100000) ;
	
	try {
		db.transaction(function(tx){
            tx.executeSql('CREATE TABLE IF NOT EXISTS cnc_info  \
            (id INTEGER PRIMARY KEY AUTOINCREMENT,nc_id INT NOT NULL,nc_name TEXT,nc_des  TEXT,nc_type INT,priority INT,diff_time INT)');
		})
	}catch(err){
		console.log("Error creating table in database :" + err)
	}
}

function readData(nc_id) {
    var res ;
	if(!db) {return ;}
	
	db.transaction( function(tx){
		var result = tx.executeSql('select (nc_id,nc_name,nc_des,nc_type,priority,diff_time) from cnc_info where nc_id = ',[nc_id]);
		if(result.rows.length > 0) {
			for(var i=0;i<result.rows.length;i++){
				res.push(result.rows.item(i).value);
			}
		}
		return res
	})
}
function insertData(datalist) {
    var res = false;
    if(!db) { return; }
    db.transaction( function(tx) {
        var result = tx.executeSql('INSERT INTO cnc_info (nc_id,nc_name,nc_type,priority,diff_time,nc_des) VALUES (?,?,?,?,?,?);',
                                   [datalist[0], datalist[1],datalist[2],datalist[3],datalist[4],datalist[5]]);
        if (result.rowsAffected > 0) {
          res = true;
        } 
    })
    return res
}


import QtQuick 2.0s 
import QtQuick.LocalStorage 2.15 
import "../../database.js" as DB

Component.onCompleted: {     DB.initDatabase()    }

Databases 文件夹内容,分别是 .ini文件和 .sqlite文件

.ini 文件存储了 访问数据库的一些必要信息
在这里插入图片描述
.sqlite 文件 存储了数据库的数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
QML 中实现数据库修改功能,需要使用到 Qt 提供的 QML 模块中的 QtQuick.Controls 和 QtQuick.Dialogs。以下是一个简单的例子: ```qml import QtQuick 2.12 import QtQuick.Controls 2.12 import QtQuick.Dialogs 1.3 import QtQuick.LocalStorage 2.0 Item { id: root property alias itemId: itemIdTextInput.text property alias itemName: itemNameTextInput.text property alias itemPrice: itemPriceTextInput.text TextInput { id: itemIdTextInput placeholderText: "Item ID" } TextInput { id: itemNameTextInput placeholderText: "Item Name" } TextInput { id: itemPriceTextInput placeholderText: "Item Price" } Button { text: "Update" onClicked: { var db = LocalStorage.openDatabaseSync("mydb", "1.0", "My Database", 1000000); var res = db.transaction(function(tx) { var rs = tx.executeSql("UPDATE items SET name=?, price=? WHERE id=?", [itemNameTextInput.text, itemPriceTextInput.text, itemIdTextInput.text]); console.log(rs.rowsAffected + " row(s) updated"); }); if (res.error) { console.error(res.error); errorDialog.text = res.error.message; errorDialog.open(); } else { successDialog.open(); } } } Dialog { id: successDialog title: "Success!" text: "Item updated successfully." standardButtons: Dialog.Ok } Dialog { id: errorDialog title: "Error!" standardButtons: Dialog.Ok } } ``` 在上面的例子中,我们创建了三个 TextInput 分别用于输入商品的 ID、名称和价格。然后创建了一个 Update 按钮,用于触发更新操作。当用户点击 Update 按钮时,将会打开一个本地数据库连接,执行一个事务,将输入的商品信息更新到数据库中。如果更新成功,则会弹出一个 Success 对话框,否则会弹出一个 Error 对话框。 需要注意的是,上面的例子中使用了 QtQuick.LocalStorage 模块来操作本地数据库。如果你想要使用其他数据库,需要根据具体的数据库类型和驱动来进行操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值