ado连接mysql,执行sql乱码

w123l123h 2016-09-23 12:54:06
c++执行slq返回乱码
MySQL ODBC 5.3有ANSI和UNICODE两个版本

sql语句: select tid as 订单号,if(pay_time is not null,'已支付','未支付') as '支付状态' from ali_order limit 1
正确的返还结果:
订单号 支付状态
12345 未支付

用ANSI版本执行:
获得的标题是正常的中文,但是内容里面会有乱码:
订单号 支付状态
12345 未?

用UNICODE版本执行:
获得的标题是乱码,但是内容是正常的中文:
?? ????
12345 未支付

执行sql前执行过: SET character_set_results = 'gbk'

执行sql的代码
	_RecordsetPtr pRecordset = NULL;// ("ADODB.Recordset");

_variant_t RecordsAffected;
if (Driver.find("Unicode") == string::npos){
pRecordset = pConnection->Execute(sql.c_str(), &RecordsAffected, adCmdText);
}
else{
wstring wsql(strToWstr(sql));
pRecordset = pConnection->Execute(wsql.c_str(), &RecordsAffected, adCmdText);
}
...全文
906 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
w123l123h 2017-02-14
  • 打赏
  • 举报
回复
未找到解决方案,最后用mysql connector for c++代替ado连接数据库就没有乱码问题了
xjq2003 2016-09-30
  • 打赏
  • 举报
回复
UNICODE,标题转换一下格式试试

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧