【编译中遇见的问题】

      ①在用vc 6.0去调用MySQL中的数据时,出现中文乱码

      ②不明白mysql中的码制

【开始解决问题】

     ①打开mysql控制台


 

     ②开始展示自己



 

     ③打开vc 6.0(配置mysql环境在这里我就不哆嗦了)

走起.....在vc 6.0中复制下列代码,进行连接mysql和调用代码如下:

#include <Windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql.h> 
#include <iostream>
#pragma comment(lib, "ws2_32")  
#pragma comment(lib, "libmysql") 
using namespace std;

//-------------------------------------调用mysql数据库--------------------------------------。
void xian()
{
  //variables like 'char%'
  MYSQL mysql;
  MYSQL_RES *resultset;  
  MYSQL_ROW row;
  mysql_init(&mysql); 
  mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "utf8");
  cout<<"-------------------------------------------------------"<<endl;
  cout<<"| 性命 |"<<" 性别 |"<<" 年龄 |"<<" 诊断结果 |"<<" 处方 |"<<" 费用 |"<<" 时间 |"<<endl;
  cout<<"----------------------------------------------------------------"<<endl;
  if (!mysql_real_connect(&mysql, "localhost", "root", "123456", "zhaofulu", 3306, NULL, 0))  
  {  
  cout <<"\n数据库连接发生错误!";  
  }  
  else  
  { 
  if(mysql_query(&mysql,"select * from users"))
  {
  cout << "查询失败";
  }
  else
  {
  resultset = mysql_store_result(&mysql);// 获得结果集 
  if (mysql_num_rows(resultset) != NULL)  
  { 
  int numFields = mysql_num_fields(resultset);// 获得表中字段数
  
  while (row = mysql_fetch_row(resultset))  
  {  
  int i = 0;  
  for (i = 0; i < numFields; i++)  
  { 
  cout<<"| "<< row[i]<<"  ";
  }
  cout<<"|";
  cout<<endl;
  cout<<"----------------------------------------------------------------"<<endl; 
  }  
  }  
  else  
  {  
  cout<<"\n无查询结果!";  
  }  
  cout<<endl;
  
  }
  }
  
}
//---------------------------数据库的连接------------------------------。
int main()
{
    const char user[] = "root";         //username
    const char pswd[] = "123456";         //password
    const char host[] = "localhost";    //or"127.0.0.1"
    const char table[] = "zhaofulu";        //database
    unsigned int port = 3306;            //server port        
    MYSQL mysql;
    mysql_init(&mysql);
    if(mysql_real_connect(&mysql,host,user,pswd,table,port,NULL,0))
    {
        cout<<"connect succeed!"<<endl; 
xian();
    }
    else
    {
        cout<<"connect failed!"<<endl;
}
    mysql_close(&mysql);//断开连接
    return 0;
}

    ③运行vc 6.0           

【问题出现】

       运行vc 6.0之后的乱码现象截图:


 

    出现乱码现象,没有像mysql中预先输入显示的效果(此时很是纠结)

    这时你开始研究代码,开始查资料,得到的结果都一样:编码问题

    这时你开始把代码中的一行代码挑了出来(其他都研究懂了,就剩下这一条):

    mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "utf8");//必须要在本函数全局定义 

    你可能会理解这是要让此函数中的所有输入和输出都以编码为utf8的格式进行

【开始解决问题】

 打开mysql控制台(查看所建的zhaofulu数据库的编码属性)


   zhaofulu数据库的编码属性为gbk

   ②在查看在zhaofulu下的user表的所有属性


 

所以把代码 mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "utf8");

改成 mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "latin1");

【再次运行vc 6.0】

 


 

【另一种方法】:

在mysql控制台上用命令:set character_set_client=gbk    进行编码修改

vc6.0运用mysql数据库中的编码所导致的乱码问题(接收和输出的编码必须要一致)的更多相关文章

  1. vc6.0连接mysql数据库

    一.MySQL的安装 Mysql的安装去官网下载就可以...最新的是5.7版本.. 二.VC6.0的设置 (1)打开VC6.中选0 工具栏Tools菜单下的Options选项,在Directories ...

  2. mybatis查询mysql 数据库中 BLOB字段,结果出现乱码

    起因 mybatis-plus 通过Mapper 查询数据,映射出来的BLOB字段中的yml数据中文是乱码的 --- DefaultValue: '' Formula: '' HintContent: ...

  3. 用JDBC把Excel中的数据导入到Mysql数据库中

    步骤:0.在Mysql数据库中先建好table 1.从Excel表格读数据 2.用JDBC连接Mysql数据库 3.把读出的数据导入到Mysql数据库的相应表中 其中,步骤0的table我是先在Mys ...

  4. html页面通过http访问mysql数据库中的内容,实现用户登录的功能

    需求: 通过html编写用户登录页面,页面内容包括用户名.密码和登录按钮,点击登录后访问login.php文件,使用按钮默认的submit提交用户名和密码,在login.php中访问mysql数据库, ...

  5. node 爬虫 --- 将爬取到的数据,保存到 mysql 数据库中

    步骤一:安装必要模块 (1)cheerio模块 ,一个类似jQuery的选择器模块,分析HTML利器. (2)request模块,让http请求变的更加简单 (3)mysql模块,node连接mysq ...

  6. MySQL数据库中delimiter的作用概述

    以下的文章主要是向大家描述的是MySQL数据库中delimiter的作用是什么?我们一般都认为这个命令和存储过程关系不大,到底是不是这样的呢?以下的文章将会给你相关的知识,望你会有所收获. 其实就是告 ...

  7. PHP往mysql数据库中写入中文失败

    该类问题解决办法就是 在建立数据库连接之后,将该连接的编码方式改为中文. 代码如下: $linkID=@mysql_connect("localhost","root&q ...

  8. 从SQLSERVER/MYSQL数据库中随机取一条或者N条记录

    从SQLSERVER/MYSQL数据库中随机取一条或者N条记录 很多人都知道使用rand()函数但是怎麽使用可能不是每个人都知道 建立测试表 USE [sss] GO ,NAME ) DEFAULT ...

  9. 在mysql数据库中制作千万级测试表

    在mysql数据库中制作千万级测试表 前言: 最近准备深入的学一下mysql,包括各种引擎的特性.性能优化.分表分库等.为了方便测试性能.分表等工作,就需要先建立一张比较大的数据表.我这里准备先建一张 ...

随机推荐

  1. Erlang Materials Outline

    Motivation 因The Erlang Run-Time System迟迟没有出版,不等了. 梳理一下学习Erlang过程中的学习笔记,以准备一个关于Erlang的small but tight ...

  2. 解决1130 Host 'localhost' is not allowed to connect to this MySQL server

  3. Dos学习笔记(1)dir命令

    这个命令是最常用的命令,就像linux的ls一样,同样他也有很多很多optionnal field供我们选择, 看了半天,觉得自己离盲打肯定还是有很大的差距的,现在只是想体验一下dos,或者说感受下这 ...

  4. IIs安装&发布&解决遇到的问题

    IIS安装: IIS发布: 1.添加网站: 2.将发布的文件,copy到该网站的目录下 3. 刷新,文件显示出来,将其"转换为应用程序” => 4.在应用程序池中找到该网站相应的程序池 ...

  5. Python第三方包的安装和管理

    要想安装第三方的包,首先安装setuptools. 然后再安装pip,这个是用来管理第三方包的. 1. 包管理器pip,安装第三方包,以Selenium为例,运行 pip install seleni ...

  6. C++结构、共用体、枚举

    一.结构 结构是C++OOP的基石.学习有关结构的知识僵尸我们离C++的核心OOP更近. 结构是用户定义的类型,同一个结构可以存储多种类型数据,这使得将一个事物的不同属性构成一个对象成为了可能.另外C ...

  7. liunx之:ln命令

    linux  一个很重要的命令 它的功能是为某一个文件在另外一个位置建立一个同步的链接,这个命令最常用的参数是-s,具体用法是: ln -s  源文件 目标文件    -s 是 symbolic的意思 ...

  8. formData上传图片

    ---------------------formData上传图片--------------------- <form id="imageform"> <img ...

  9. updatepanel 回发或回调参数无效

    不同于网上的其它情况,这个是由于通过js修改了服务器控件Select的列表项数目,导致验证viewstate时出现的问题.最后改为通过服务器代码来给Select加选项,就不会报这个错误了. 服务器控件 ...

  10. Python核心编程练习题笔记: type(a)==type(b) 和 type(a) is type(b)的差别

    前式需要找到类型的ID(相当于门牌号),然后“敲门”取得类型值 后式只需要找到类型的ID,而不需要再去“敲门”获得类型具体值.在一个“门牌号”内只可能有一个值,因此就不用明知故问了.因此后式比前式少了 ...