• 3778阅读
  • 3回复

QtSquery查询sqlite数据库出问题 [复制链接]

上一主题 下一主题
离线zheguzai
 

只看楼主 倒序阅读 楼主  发表于: 2013-10-15
关键词: sqliteqtsquery
我这个是在嵌入式Linux开发的,创建的表如:Id,name,....
表名为Account,Id中保存的就是卡号,
通过rfid刷卡的时候吧卡号存储起来,如果数据中有此卡号就不用再存了,所以 在存之前先要进行查询,我这样写的


其中dat就是我刷出来的卡号,需要进行查询的
  1. query.exec(QString("SELECT Id FROM Account WHERE Id = %1").arg(dat))

上面这句执行完毕后,我调用query.next()来判断是否查询到数据,结果这个next一直为false,可是我数据库中明明有数据的,而且有好几条此卡号的数据,


试验了好多种不行,后来使用下面这句,全部查询出来,然后再循环遍历找看有没有id为dat的卡号
  1. if (query.exec("SELECT * FROM Account"))
  2.     {
  3.         while(query.next())
  4.         {
  5.             qDebug()<<"query....";
  6.             if (query.value(0).toString() == dat)
  7.             {
  8.                 qDebug()<<"find id card";
  9.                 return;
  10.             }
  11.         }
  12.     }


像上面这样写就可以查出来,但是总觉得这样很麻烦,先要全部查出来然后再慢慢找,为什么不能像第一种那样一下子找到呢?
有碰到的没有,知道怎么解决的么?说说



离线alexltr

只看该作者 1楼 发表于: 2013-10-15
Id是什么类型的数据?
如果是varchar或text等字符类型,可能要加上单引号
query.exec(QString("SELECT Id FROM Account WHERE Id = '%1'").arg(dat))

我不从事IT,只是喜欢Qt。
我不是程序员,只是与程序有缘。
我写程序,只是为了让工作变得简单有序!

                      ----  一个一直在入门的编程学习者
离线zheguzai

只看该作者 2楼 发表于: 2013-10-16
Id是VARCHAR类型的,好的我试试
离线zheguzai

只看该作者 3楼 发表于: 2013-10-16
我得个去了,果然好用啊,加了引号立马就好了
快速回复
限100 字节
 
上一个 下一个