当前位置:Gxlcms > 数据库问题 > mysql的安装、C++訪问mysql数据库、编码设置问题

mysql的安装、C++訪问mysql数据库、编码设置问题

时间:2021-07-01 10:21:17 帮助过:30人阅读

1>main.obj : error LNK2019: unresolved externalsymbol _mysql_set_character_set@8 referenced in function _main

1>main.obj : error LNK2019: unresolved externalsymbol _mysql_init@4 referenced in function _main

1>main.obj : error LNK2019: unresolved externalsymbol _mysql_real_connect@32 referenced in function _main

1>main.obj : error LNK2019: unresolved externalsymbol _mysql_query@8 referenced in function _main

1>main.obj : error LNK2019: unresolved externalsymbol _mysql_store_result@4 referenced in function _main

1>main.obj : error LNK2019: unresolved externalsymbol _mysql_fetch_row@4 referenced in function _main

1>main.obj : error LNK2019: unresolved external symbol_mysql_close@4 referenced in function _main

 

意思就是说这些符号都无法找到从而导致链接失败。

非常明显编译是正常的仅仅是链接失败。首先回去检查上面的三项设置是否对了,假设没有错误的话可能是与系统的版本号有关,比方说你用的是64为的windows系统,可是建立project建立的却是32位的project。

这是后同上面一样,project(project)右键->选项(properties)-> 在属性页(property pages)的最上面 有个平台选择(platform)然后选择x64,这样再回来编译就ok了

本文作者:csdn  iaccepted 凌风

三、中文乱码问题

查看mysql的用户手冊能发现,mysql进行字符编码转换的步骤非常明白:

 

1. MySQL Server收到请求时将请求数据从character_set_client转换为character_set_connection;

2. 进行内部操作前将请求数据从character_set_connection转换为内部操作字符集,其确定方法例如以下:

? 使用每一个数据字段的CHARACTER SET设定值。

? 若上述值不存在,则使用相应数据表的DEFAULT CHARACTER SET设定值(MySQL扩展。非SQL标准);

? 若上述值不存在。则使用相应数据库的DEFAULT CHARACTER SET设定值;

? 若上述值不存在,则使用character_set_server设定值。

3. 将操作结果从内部操作字符集转换为character_set_results。

 

普通情况下我们将mysql的默认编码设置为utf8格式。然后在在client进行操作。当有中文操作时。我们先更改client的编码比方改为gbk,然后进行插入读取,这时候mysql在接受到数据时发现是gbk编码的,如上会将gbk编码转换成character_set_server编码的数据进行存入。在这里也就是将gbk转换为utf8。读取的时候mysql会自己主动将读取的结果从内部字符集转换为character_set_results指定的编码,即从uft8转换为gbk从而不会产生编码问题。

以上转换为自己主动进行的过程,程序猿要做的仅仅是设置好内部编码格式以及client编码格式就可以,这里的client是广义的。既能够指command lineclint 也能够仅仅应用程序,说白了就是不论什么要訪问mysql的东西统称为client。如上面样例中的代码。C++程序作为client时,由于要操作中文,所以首先使用

mysql_set_character_set(con,"gbk");

将client编码设置为gbk,这样存入的中文mysql会进行转换而成为utf8格式。读取的时候mysql又会从utf8格式转换成gbk返回给client。

 

查看以上各编码的命令

  1. mysql> SHOW VARIABLES LIKE ‘character%‘; 
就能够看到character_set_server、character_set_connection、character_set_results等的值。


 

主要是理解上述所说的mysql字符编码转换的步骤,这样就能控制不会出现乱码问题。

 

本文作者:csdn  iaccepted 凌风


mysql的安装、C++訪问mysql数据库、编码设置问题

标签:nullptr   错误   base   error   使用   text   方法   乱码问题   技术分享   

人气教程排行