锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / 数据库开发开源 / mysql用C++开发获取bit类型字段值方法
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft
服务方向
人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发

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


mysql用C++开发获取bit类型字段值方法


背景

最近开发要用一个标志数据,就选择了mysql的BIT(1)数据类型,默认想着是整数类型的范畴,按整数数值来处理,结果不行,遇到了问题,这里整理给大家。

问题表现,用常用的办法获取到的字符是个方块,方块转布尔类型,根本转不了,值是错误的。普通的整数转换代码如下:

			iusflw=atoi(rs1.get(i,3).c_str());

用上面的代码转换atoi转的是个方块,得不到数据库里的值,但是用mysql的客户端workbench正常没问题。

解决办法

认真分析了取值用到的数组类型情况,用以下代码解决了问题:

			if(rs1.get(i,6).size()>0)
				ipmflag=rs1.get(i,6)[0];
			else
				ipmflag=0;

上面代码对应的mysql是phpstudy里mysql 5.5.38版本,其它版本是不是这样不太确定。

另外可以用CAST进行数据类型转换,比如:

cast(bit as UNSIGNED)

但这样写sql语句麻烦,不如直接用字段名方便,但改sql语句和改C++取值代码,看个人喜好,都可以解决问题。

整体代码如下:

		ResultSet rs1;
swprintf(wcsql,_T("SELECT flag FROM configmotior where company='%s'"),scom);
char *psql=UnicodeToUtf8(wcsql);
mysql.execute(psql);
free(psql);
mysql.populate(rs1);
int itfl,ihfl,iusflw,ipmflag;
double dsal;
for(int i=0;i<rs1.countRows();i++)
{
suser=UTF82WCS(rs1.get(i,0).c_str());//by shw 20210308 害怕中文名
if(rs1.get(i,1).size()>0)
seuser=UTF82WCS(rs1.get(i,1).c_str());
else
seuser=_T("");
itfl=atoi(rs1.get(i,2).c_str());
iusflw=atoi(rs1.get(i,3).c_str());
ihfl=atoi(rs1.get(i,4).c_str());
dsal=atof(rs1.get(i,5).c_str());
if(rs1.get(i,6).size()>0)
ipmflag=rs1.get(i,6)[0];
else
ipmflag=0;
if(rs1.get(i,7).size()>0)
sdc=UTF82WCS(rs1.get(i,7).c_str());
else
sdc=_T("");
}

如果需要这一套开发环境,也可以联系我,VS2010,MFC,mysql连接库,构造连接字符串,连接,执行sql语句,返回结果。

想学习分析C++开发问题,解决问题,请关注我。

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