VC连接数据库输出乱码的解决方案

     使用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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值