sqlite in qt

storage.js

//storage.js
 
//数据库文件默认路径:QDeclarativeEngine::offlineStoragePath()
//数据库文件路径更改:QDeclarativeEngine::setOfflineStoragePath(const QString & dir)
 
// 打开并获取数据库对象
function getDatabase() {
     return openDatabaseSync("MyApp", "1.0", "StorageDatabase", 100000);
}
  
//初始化表
function initialize() {
    var db = getDatabase();
    db.transaction(
        function(tx) {
            tx.executeSql('CREATE TABLE IF NOT EXISTS myTable(name TEXT UNIQUE, study TEXT)');
      });
}
  
//写入数据库
function setSetting(name, study) {
   var db = getDatabase();
   var res = "";
   db.transaction(function(tx) {
        var rs = tx.executeSql('INSERT OR REPLACE INTO myTable VALUES (?,?);', [name,study]);
              if (rs.rowsAffected > 0) {
                res = "OK";
              } else {
                res = "Error";
              }
        }
  );
  return res;
}
 
//获取数据1
function getSetting(name) {
   var res="";
   var db = getDatabase();
   db.transaction(function(tx) {
     var rs = tx.executeSql('SELECT name,study FROM myTable WHERE name=?;', [name]);
     if (rs.rows.length > 0) {
          res = rs.rows.item(0).name;
     } else {
         res = "Unknown";
     }
  })
  return res
}
 
//获取数据2
function getSetting2() {
  var r = "";
  var db = getDatabase();
  db.transaction(function(tx) {
    var rs = tx.executeSql('SELECT name,study FROM myTable');
    for(var i = 0; i < rs.rows.length; i++) {
        r += rs.rows.item(i).name + ", " + rs.rows.item(i).study + "\r\n"
    }
    print(r);
 })
 return r
}

main.qml

import QtQuick 1.1
import "storage.js" as Storage
 
Rectangle {
    width: 360
    height: 360
    id: screen
    Text {
        id: textDisplay
        anchors.centerIn: parent
    }
    Component.onCompleted: {
        // 初始化数据库
        Storage.initialize();
        // 赋值
        Storage.setSetting("张三","新疆大学");
        Storage.setSetting("李四","内蒙大学");
        //获取一个值,并把它写在textDisplay里
        //textDisplay.text = "The value of mySetting is:\n" + Storage.getSetting("mySetting");
        textDisplay.text = Storage.getSetting2();
    }
}

  

 

 

posted on   chuncn  阅读(924)  评论(1编辑  收藏  举报

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
历史上的今天:
2011-09-19 业务操作系统

导航

< 2012年9月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 1 2 3 4 5 6
点击右上角即可分享
微信分享提示