qml使用SQLite时查询SQLite的版本号

  起因:在写数据库的时候不想每次插入数据都要考虑主键的自增,因为不想在ui去写主键字段,也不想在ui节目维护这个主键,只想做一个简单数据库,但是又要对用户信息进行修改,就需要一个唯一标识,这个时候考虑到用户姓名应该允许重名,并且用手机号也好像不太行,就只剩下加个主键了。
  百度了一下只有SQLite3以上的支持主键自增,所以就想看一下当前qt版本的SQLite是什么版本,这个时候就有人要问了,为什么不直接测测试一下呢,别问,问就是我非要看看能不能用qml查到SQLite的版本

现在写这篇文章的时候发现,主键是支持自增的,但是加不加AUTOINCREMENT是有区别的12

直接上关键部分的代码:

function dbGetVersion()
{
    var db = dbGetHandle()
    db.transaction(function (tx) {
        var results= tx.executeSql('SELECT sqlite_version()')
        var keys = Object.keys(results.rows.item(0));
        console.log(keys.length) 
        for(var i = 0; i < keys.length; i++) {
            var key = keys[i];
            console.log("item(0)"+key + ': ' + results.rows.item(0)[key]);
        }
        console.log("keys[0] "+keys[0])
        console.log("dbGetVersion:"+results.rows.item(0)[sqlite_version] )
    })
}

输出:

qml: 1
qml: item(0)sqlite_version(): 3.36.0
qml: keys[0] sqlite_version()
qrc:/Database.js:146: ReferenceError: sqlite_version is not defined

可以看到 keys[0] 里面的内容是sqlite_version() ,但是results.rows.item(0)[sqlite_version] 就不行,我也没搞清楚,但是可以这样:

console.log("dbGetVersion:"+results.rows.item(0)[keys[0]] )

就可以正确输出了:

qml: dbGetVersion:3.36.0

//这里提一下关于results的类型,结论是:results.rows.item(0)

var results= tx.executeSql('SELECT sqlite_version()')

//可以用 var keys = Object.keys(results);  去遍历

  var results= tx.executeSql('SELECT sqlite_version()')
        var keys = Object.keys(results);
        console.log(keys.length)
        for(var i = 0; i < keys.length; i++) {
            var key = keys[i];
            console.log(key + ': ' + results[key]);

qml: rowsAffected: 0
qml: insertId:
qml: rows: [object Object]

至于item(0)这个[object Object]是什么则可以用上述方法去遍历就行了


  1. SQLITE3主键自增 ↩︎

  2. AUTOINCREMENT加不加的区别 ↩︎

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值