小弟最近做项目使用MySQL的C API时,遇到一个MySQL数据库字符集的问题。查了些资料,现将相关MySQL的命令贴出来与大家分享(MySQL版本):
1.查看数据库使用的字符集,键入命令show variables like 'character/_set/_%';
mysql> show variables like 'character/_set/_%';
+--------------------------+--------+
| Variable_name | Value |
+--------------------------+--------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
+--------------------------+--------+
6 rows in set (0.13 sec) 可以看到默认安装使用的字符集是latin1
2.修改数据库字符集,这里提供两种方法
第一种,修改安装目录下的配置文件my.ini,将default-character-set=latin1修改为default-character-set=需要的字符集。重启有效。
第二种, 命令行修改,set character set utf8.当前会话有效,重启失效。因此,多采用第一种方法。
3. 在Windows下面使用MySQL C API时,除了需要将MySQL的头文件和库文件添加到项目里面外,还需要修改mysql.h文件中的63-65行
#ifndef my_socket_defined
#ifdef __WIN__
#define my_socket SOCKET
为
#ifndef my_socket_defined
#ifndef __WIN__
#define my_socket SOCKET
否则,编译会出错。
4.在程序中,使用MySQL C API的mysql_query方法时,如果,query字符串包含中文时,需要先执行一次mysql_query(pMySQL,"set character set utf8");其中,第一个参数是MYSQL*类型的对象,第二个则是实际执行的语句,意思是将字符集设置成为支持中文编码的utf8字符集
5.导入导出MySQL数据库数据命令
导出数据:
mysqldump -u userName -p -A>c:/temp.sql——将数据库中的所有数据导出到temp.sql文件中
mysqldump -u userName -p DatabaseName >c:/temp.sql——只是将某一数据库的内容导出到temp.sql文件中
mysqldump -u userName -p DatabaseName TableName >c:/temp.sql——将数据库中特定表导出到temp.sql文件中
导入数据:
在命令行mysql>输入source C:/temp.sql即可将已导出的数据导入到数据中
6.查看某一数据库或者是某一张数据表的字符集命令
show create database dbName
show create table tbName