问题描述:
使用C++连接mysql。用的时ODBC的方式进行连接。前面的分配环境句柄、设置环境属性和分配连接句柄都没有问题,但是进行SQLConnect(),数据源连接的时候,就会出现连接失败的问题。
解决办法在文末,过程可不看。
问题代码:
SQLConnect(myConnetHandle, (SQLWCHAR*)"dwq", SQL_NTS, (SQLWCHAR*)"root", SQL_NTS, (SQLWCHAR*)"666666", SQL_NTS);排除了数据源名字、用户名和密码的因素。注意到下图的问题提示:

猜测可能和 SQLWCHAR 有关。
查看sqltypes.h中有关SQLWCHAR 和SQLCHAR 的定义:
![]()
百科中 wchar_t 中的解释:
wchar_t是C/C++的字符数据类型,是一种扩展的字符存储方式,wchar_t类型主要用在国际化程序的实现中,但它不等同于unicode编码。unicode编码的字符一般以wchar_t类型存储。char是8位字符类型,最多只能包含256种字符,许多外文字符集所含的字符数目超过256个,char型无法表示。
于是查看了项目的属性配置,字符集中的配置使用的的 Unicode,见下图:

但因本人知识储备量少,没能弄懂他们之间的具体关系。仅仅找到了问题的一种解决办法。
解决办法:
修改字符集配置为多字节,并将连接函数修改,如下图:

虽然解决了问题,但是具体的原因还没弄清楚,如果有看到此文章大佬,请赐教,感谢~
版权声明:本文为L946494原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。