我目前用到的几个函数,只要是接受字符串型参数的函数,全都是 char 型。各位都知道汉字是 whcar_t 型的。这可怎么办啊?
我在安装MYSQL的时候,好不容易算是会配置了字符集 ---- 选择了gb开头的,然后才使得MYSQL自带的控制台程序能输入输出中文。
以下面的代码为例,经过反复试验,得知错误就出现在 mysql_real_query 函数的位置。当把上面的表名换成英文就可以输出0了。 我把后面的都注释掉了,为的是从头查找错误。 那行输出 mysql_real_query 的返回值是1。
#include "iostream"
#include <windows.h>
#include <winsock.h>
#include <stdio.h>
#include "C:\\Program Files\\MySQL\\MySQL Server 5.1\\include\\mysql.h"
using namespace std;void main()
{
MYSQL mysql;
MYSQL_RES * res;
MYSQL_ROW row;
char * query;
int t,r; mysql_init(&mysql);
mysql_real_connect(&mysql,0,"root","1","ab",3306,0,0);
query = "select * from 学生成绩表";
cout<<mysql_real_query(&mysql,query,strlen(query));
res = mysql_store_result(&mysql);
// cout<<res;/*
while (row = mysql_fetch_row(res) )
{
for(t=0;t<mysql_num_fields(res);t++)
{
// printf("%s",row[t]);
// cout<<row[t];
}
printf("\n");
}
*/
/*
printf("mysql_free_result...\n"); mysql_free_result(res); //free result after you get the result ::Sleep (1); //execute the insert query query = "insert into t学生成绩表 values('HH',10,10,10)";
t= mysql_real_query(&mysql,query,(unsigned int) strlen(query)); if(t)
printf("Error making query: %s\n",mysql_error(&mysql));
else
printf("[%s] made...\n",query);
*/
mysql_close(&mysql);}
我在安装MYSQL的时候,好不容易算是会配置了字符集 ---- 选择了gb开头的,然后才使得MYSQL自带的控制台程序能输入输出中文。
以下面的代码为例,经过反复试验,得知错误就出现在 mysql_real_query 函数的位置。当把上面的表名换成英文就可以输出0了。 我把后面的都注释掉了,为的是从头查找错误。 那行输出 mysql_real_query 的返回值是1。
#include "iostream"
#include <windows.h>
#include <winsock.h>
#include <stdio.h>
#include "C:\\Program Files\\MySQL\\MySQL Server 5.1\\include\\mysql.h"
using namespace std;void main()
{
MYSQL mysql;
MYSQL_RES * res;
MYSQL_ROW row;
char * query;
int t,r; mysql_init(&mysql);
mysql_real_connect(&mysql,0,"root","1","ab",3306,0,0);
query = "select * from 学生成绩表";
cout<<mysql_real_query(&mysql,query,strlen(query));
res = mysql_store_result(&mysql);
// cout<<res;/*
while (row = mysql_fetch_row(res) )
{
for(t=0;t<mysql_num_fields(res);t++)
{
// printf("%s",row[t]);
// cout<<row[t];
}
printf("\n");
}
*/
/*
printf("mysql_free_result...\n"); mysql_free_result(res); //free result after you get the result ::Sleep (1); //execute the insert query query = "insert into t学生成绩表 values('HH',10,10,10)";
t= mysql_real_query(&mysql,query,(unsigned int) strlen(query)); if(t)
printf("Error making query: %s\n",mysql_error(&mysql));
else
printf("[%s] made...\n",query);
*/
mysql_close(&mysql);}
解决方案 »
- 如果现在连接的是默认数据库,我切换到其它数据库以后如何切回默认数据库?
- 关于创建存储过程的问题,求助
- 一个linux上mysql的odbc数据源问题,帮看一下,我想用127.0.0.1
- mysql cluster
- mysql数据库表文件属主问题
- 抗议MYSQL的默认字符集是 latin1_swedish_ci
- mysql的安装问题
- 请教:怎样把MYSQL的数据直接导入到Access数据库里?
- 数据量有点大,查询很慢咋解决呢?
- mysql,如何用sql语句实现,用正则匹配url字段里的数字id,然后存入另一个字段
- Toad for Mysql查询分析器
- 删除表中记录,为什么提示找不到字段,肯定不是中文字符的问题
MySQL 中文显示乱码