最近,在我使用Qt和sqlite数据库进行编程的时候,不免得利用数据库语句在数据库中进行查询,并且提取出我认为有用的数据。在我对数据类型进行转换的过程中,发现一个惊人的陷阱,就是QString和int类型的变量都可以储存数据库的执行结果,唯独char类型不可以。
比如我想要在数据库查询某个字段的值是否存在,我会使用如下的语句。 select count(*) from student where name='xxx'; 结果无非就是0或者!0。
光看这个1,肯定会先想到用int去存储,或者是char,甚至用到字符串,其实并没有任何的区别。
但是,这个致命的陷阱是,用char存储不会有任何的报错,只是结果为空而已。
还有一个比较坑的地方,就是C++原生的语法并不支持switch语句去判断一个字符串,但是switch char是可以的。
这不,又让人不由自主地想要去用char了吗? 比如这个result字段的结果,我想要根据result的结果去为用户做一个智能推荐,switch(result)显然是第一反应,但遗憾的是用char去存储result的查询结果,程序不能完成我想要的工作,也不会报错。
而且,讲道理C++也不怎么支持string强行转char,因为可能会越界,所以就只能用如下相当尴尬的方法了。一个尴尬但有用的强制转换方式。 以后大家想要操作数据库的时候,可千万记得用string类型存储数据库的查询结果,不要再去用char了。
这篇文章我想讲的都是干货,希望大家能够喜欢,下次会继续给大家带来我的编程技术文章。
方便的话,不如给我的b站号点一个关注,里面也有许多项目的视频讲解。
作者:吉法师o
https://www.bilibili.com/read/cv2302798
出处: bilibili