锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / C++开源心得 / QT数据库开发Unable to fetch row错误和No query错误

联系方式

固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

服务方向

人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发

锐英源精品开源,禁止转载和任何形式的非法内容使用,违者必究


QT数据库开发Unable to fetch row错误和No query错误


出错背景

最近完成一个Linux下的通信项目,用QT开发,访问了2个类型的数据库,中间遇到了不少问题,毕竟以前没用过这类环境,不过问题也都解决了。本文列举了最常见的错误:Unable to fetch row错误和No query错误。写如下代码段进行查询时,会遇到上述错误:

    QSqlQuery sql_query(*localdb);

     //查询所有记录
     QString select_all_sql = "select type from user where username='"+id+"' and passwd='"+passwd+"'";
     sql_query.prepare(select_all_sql);
     if(!sql_query.exec())
     {
         QMessageBox::critical(0,QString::fromUtf8("错误提示"),QString::fromUtf8("登录异常"),QMessageBox::Cancel);
         qDebug()<<sql_query.lastError();
     }

输出是由qDebug()语句执行时实现。

意思解析

No query表示没有查询,其实是查询错的意思。有错,就导致查询不了,也就是Unable to fetch row结果,不能提取行集。

SQL语句的错误千变万化,在编程环境里肉眼分析是有难度的,一般是把SQL语句放到数据库客户端里执行,进行找错,不过这也不是初学者能理解的。


原因

有一次出事是因为单引号多了一个,在SQL语句里字符数值要用单引号包含,如果多了个单引号,数据库解析语句就会失败,就不会执行查询,返回行集。

另外一次报错,看着SQL语句一点儿问题都没有啊,放客户端里执行也没报错,当时就几乎放弃了,后来查了查字段名,发现设计的字段名里有空格,代码里的SQL语句没空格,把表设计里的字段名里多余空格去掉,问题解决。

友情链接
版权所有 Copyright(c)2004-2021 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院(文化路97号院)内