由mysql中文乱码延伸的问题

由mysql中文乱码延伸的问题

对数据库编程确实不太懂,请大家海涵
创建了一个表之后,程序做insert操作如下:

char *set1 = "SET NAMES 'gbk'";
db = mysql_init(NULL);
mysql_real_connect(db, NULL, "root", "root", "log",0, NULL, 0);
mysql_real_query(db, set1, strlen(set1));
char *sql="insert log.table values(a,b,\"中文字符\")";
mysql_real_query(db, sql, len);

然后登陆mysql的shell
mysql>select * from log.table;显示为中文乱码

如果在shell中执行
mysql>SET NAMES 'gbk';
mysql>select * from log.table;
中文显示成功
我的问题是:在程序中的
char *set1 = "SET NAMES 'gbk'";
mysql_real_query(db, set1, strlen(set1));
不是完成shell中SET NAMES 'gbk';功能的吗,为什么非要在shell中输入一次才行呢

c?
不太熟,貌似没什么问题。
如履薄冰