C++Qt数据库使用的一个难以察觉的陷阱

 最近,在我使用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值