QT操作Sqlite出现No query Unable to fetch row错误问题搜集和处理办法

常见No query Unable to fetch row错误情形和处理方式如下:

1、打开数据库后进行查询或者新增修改操作后,没有执行数据库的关闭操作。解决办法就是打开数据库后记得一定要关闭。

打开数据库命令:database.open()

关闭数据库命令:database.close();

2、查询SQL语句写法错误,如不使用query.next()或者不使用query.finish()就很容易出错,标准写法如下:
if(!query.exec())
    {
        Log4qt << query.lastError().text();
    }
    else
    {
        if(query.next()){
            result= query.size();
        }
    }
    query.clear();
    query.finish();

3、SQL语句中的字段名和数据库中的不一致,需要修改SQL语句或者数据库中的字段名,使代码中和数据库中的字段名保持一致。

sql语句为:insert into TB_LOG(UserAccount) values (:UserAccount)
数据库中的TB_LOG数据表里面没有UserAccount字段,实际只有UserID字段,执行上面新增语句就会出错,解决办法是修改数据表中的UserID字段名为UserAccount后再执行,即可去除错误。

4、SQL语句中的部分函数用法不支持问题,可以尝试用类似的SQL语句来替换部分SQLITE自带函数,如:错误语句:

SELECT ifnull(count(1),0) as total FROM TB_LOGINERR WHERE ceil((datetime('now','localtime')-LoginTime)*24)=1 and LoginIP='192.168.108.1'

需修改成正确语句:

 SELECT ifnull(count(1),0) as total FROM TB_LOGINERR WHERE julianday(datetime('now','localtime'))-julianday(LoginTime) <1 and LoginIP='192.168.108.1'

修改后再执行程序方才不报错(注意的是前者在navicate for sqlite软件是可以正确执行查询的,很容易让人迷惑)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疾风铸境

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值