error C2664 SQLWCHAR error Under VS2013
Error vs2013
2023-09-11 14:20:00 时间
首先不得不说,接手别人的代码是一件非常GG的事情,比赛时间也将近了,对此不能进行大改...
自己挖的坑,土不够就自己上!!!
SQLHENV henv = NULL;
SQLHDBC hdbc = NULL;
SQLHSTMT hstmt = NULL;
SQLRETURN result;
SQLCHAR ConnStrIn[MAXBUFLEN] = "DRIVER={MySQL ODBC 5.1 DRIVER};SERVER=127.0.0.1;UID=root;PWD=root;DATABASE=test;CharSet=gbk;";
SQLCHAR ConnStrOut[MAXBUFLEN];
SQLWCHAR是UNICODE模式的双字节字符。
这时候你在VS2013上跑,然后就是一堆error C2664
首先确认工程是否为UNICODE模式,如果是,使用WCHAR之类的双字节字符声明字符串数组或指针(具体看编程环境,各个编程环境定义不一样)。
虽然这玩意在VS2013环境中,不建议使用这个SQL连接代码,这是ODBC的数据库连接方式,二十年前已经被淘汰的。 建议百度"VC ado 连接数据库"获取更多信息。
奈何这个人家2013年写的代码,也只给维护,所以...
正题:只需要
-
通常vs项目属性(在项目属性->设定->通用->字符集)设置字符集:
- 未设置。VS2008默认ansi编码,VS2010默认字符集是Unicode。
- Unicode编码。
- 多字节编码。
注意:只有unicode和多字节,没有utf8,所以utf8是必须要转换才能用。
Win字符集
- 所谓的「ANSI」指的是对应当前系统 locale 的遗留(legacy)编码。Windows 里说的「ANSI」其实是 Windows code pages,这个模式根据当前 locale 选定具体的编码,比如简中 locale 下是 GBK。把自己这些 code page 称作「ANSI」是 Windows 的臭毛病。在 ASCII 范围内它们应该是和 ASCII 一致的。
- 所谓的「Unicode」指的是带有 BOM 的小端序 UTF-16。把带有 BOM 的小端序 UTF-16 称作「Unicode」也是 Windows 的臭毛病。Windows 从 Windows 2000 开始就已经支持 surrogate pair 了,所以已经是 UTF-16 了,「UCS-2」这个说法已经不合适了。UCS-2 只能编码 BMP 范围内的字符,从 1996 年起就在 Unicode/ISO 标准中被 UTF-16 取代了(UTF-16 通过蛋疼的 surrogate pair 来编码超出 BMP 的字符)。
- 把带 BOM 的 UTF-8 称作「UTF-8」又是 Windows 的臭毛病。如果忽略 BOM,那么在 ASCII 范围内与 ASCII 一致。另请参见:「带 BOM 的 UTF-8」和「无 BOM 的 UTF-8」有什么区别?
相关文章
- 无法生成临时类(result=1)。 error CS0229: “DCSoftDotfuscate.aam.a”与“DCSoftDotfuscate.aam.a()”之间存在二义性
- ERROR 1010 (HY000): Error dropping database (can't rmdir '.qpweb', errno: 41) 删库失败问题的解决
- Open Flash Chart IO ERROR Loading test data Error #2032
- OpenGL与vs编程——error C2440: “glMaterialfv”: 无法从“GLfloat”转换为“const GLfloat *”
- loadrunner12.55:关联回放失败Action.c(16): Error: C interpreter run time error: Action.c (16): Error -- memory violation : Exception ACCESS_VIOLATION received.,自动关联生成函数web_reg_save_param_attrib()
- error: pathspec 'master' did not match any file(s) known to git.
- LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- [React Testing] Hide console.error Logs when Testing Error Boundaries with jest.spyOn
- [JS Compose] 3. Use chain for composable error handling with nested Eithers (flatMap)
- eclipse出现updating error reports database一直运行解决方案
- [FAQ] golang-migrate/migrate error: migration failed in line 0: (details: Error 1065: Query was empty)
- error occurred when trying to upload ui5 project to ABAP repository in win8
- 成功解决pandas.errors.ParserError: Error tokenizing data. C error: Expected 1 fields in line 48, saw 2
- 【异常】dbeaver连接ClickHouse时:Unexpected driver error occurred while connecting to the database
- 已解决nltk.download(‘stopwords‘) [nltk_data] Error loading stopwords: <urlopen error [Errno 11004] [nlt
- SVN Error: “' 'x' isn't in the same repository as 'y' ” during merge (并不在同一个版本库中)
- error [03:10:02.393] [warning][process] Error: Request Timeout after 30000ms
- 嵌入式linux开发,编译报错:error: ‘sigset’ was not declared in this scope
- [MySQL] 解决办法: Error: Transaction test error: file /etc/my.cnf from install of mysql-community-server
- SpringBoot无法访问接口,报错:This application has no explicit mapping for /error, so you are seeing this as a fallback.
- Error:java: Compilation failed: internal java compiler error
- 【React 错误处理】 ---- Error: Minified React error #185;
- Repo报错:GnuTLS recv error (-9): Error decoding the received TLS packet.