使用VC6.0连接mysql的时候,在输出中文时,会出现乱码,可以用下面的函数解决:
mysql_set_character_set(myData,"gb2312"); //这个是用在linux 下的,
VC6.0下用这个: mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gb2312");
#include <iostream>
#include <iomanip>
#include <winsock2.h>
#include "mysql.h"
//#pragma comment(lib,"libmysql.lib") //这句可以省略。
using namespace std;
int fetchsqldb(char *mysql_host);
int main()
{
char input_buf[256];
char host[256];
while(cout<<"input a num, q for quit:"<<endl,gets(input_buf))
{
switch(input_buf[0])
{
case'q': return 0;
case'1':
cout<<"input host ip:"<<endl;
while(gets(host))
{
fetchsqldb(host);
break;
}
break;
case'2':
fetchsqldb("192.168.111.100");
break;
default:
cout<<"input invalid!"<<endl;
}
}
return 0;
}
int fetchsqldb(char *mysql_host)
{
int t = 0, i = 0;
char query_buf[2048];
MYSQL_RES *res;
MYSQL_ROW row;
MYSQL mysql;
cout<<"fechsqldb starting..."<<endl;
mysql_init(&mysql);
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gb2312");//解决输出中文乱码问题
if(mysql_real_connect(&mysql,mysql_host, "root", "cxq31415926", "cxq", 3306, NULL, 0))
{
cout<<"connect sql server ok!"<<endl;
}
else
{
//mysql_error(&mysql);
const char *s = mysql_error(&mysql);
cout<<s<<endl;
return 1;
}
strcpy(query_buf,"select * from student");
t= mysql_query(&mysql, query_buf);
if(t)
{
cout<<"Error execute query:"<<mysql_error(&mysql)<<endl;
return 1;
}
else
{
cout<<"Query success!"<<endl;
}
res= mysql_use_result(&mysql);
for(i = 0; ;i++) //mysql_field_count(&mysql),i<mysql_num_rows(res) 这个结果不对
{
row= mysql_fetch_row(res);
if(row<= 0)
break;
for(t= 0; t < mysql_num_fields(res); t++)
cout<<setw(16)<<row[t]<<"";
cout<<""<<endl;
}
cout<<"fetch end!"<<endl;
mysql_close(&mysql);
return 0;
}