VC连接mysql

#include <windows.h>  
#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
#include <mysql.h>   
#include <iostream>
#include<iomanip>  
#pragma comment(lib,"libmysql.lib")//连接MysQL需要的库  
using namespace std;  
int main()  
{  
    const char user[] = "root";         //username  
    const char pswd[] = "016457t";    //password  
    const char host[] = "localhost";    //or"127.0.0.1"  
    const char table[] ="yggl";       //database  
    unsigned int port = 3306;           //server port          
    MYSQL myCont;  //句柄
    MYSQL_RES *result;//理解为一个二维表类似 android中cursor  
    MYSQL_ROW sql_row; //以行为单位 
    MYSQL_FIELD *fd;  //域:以列为单位
    char column[32][32];  
    int res;  
    mysql_init(&myCont);  //初始化mysql句柄.如果mysql为NULL, 则分配一个.
    if(mysql_real_connect(&myCont,host,user,pswd,table,port,NULL,0))  //连接数据库
    {  
        cout<<"connect succeed!"<<endl;  
        mysql_query(&myCont, "SET NAMES GBK"); //设置编码格式,否则在cmd下无法显示中文  
        res=mysql_query(&myCont,"select * from employees");//勉强理解为查询失败返回true 
        if(!res)  //非res
        {  
            result=mysql_store_result(&myCont);//保存查询到的数据到二维表result  
            if(result)//判断二维表是否为空  
            {  
                int i,j;  
                cout<<"number of result: "<<(unsigned long)mysql_num_rows(result)<<endl; //获取表中行数 
                for(i=0;fd=mysql_fetch_field(result);i++)//光标以列为单位;用来从查询结果中取得字段的信息。
					//如果没有指定字段偏移量,则提取下一个尚未被 mysql_fetch_field() 取得的字段
                {  
                    strcpy(column[i],fd->name); //fd->name 很特殊 
                }  
                j=mysql_num_fields(result);  //表的字段数或宽度
                for(i=0;i<j;i++)  
                {  
                    cout<<std::left<<setw(10)<<column[i];
                }  
                cout<<'
';  
                while(sql_row=mysql_fetch_row(result))//光标以行为单位;获取具体的数据 sql_row为一个一维数组
					//mysql_fetch_row与mysql_fetch_field类似即如果没有指定行的偏移量,则提取
					//下一个尚未被mysql_fetch_row取得的行
                {  
                    for(i=0;i<j;i++)  
                    {  
						cout<<std::left<<setw(10)<<sql_row[i];
                    }   
					cout<<'
';
                }  
            }  
        }  
        else  
        {  
            cout<<"query sql failed!"<<endl;  
        }  
    }  
    else  
    {  
        cout<<"connect failed!"<<endl;  
    }  
    if(result!=NULL) mysql_free_result(result);//释放二维表result中的结果资源  
    mysql_close(&myCont);//断开与MySQL的连接  
    return 0;  
} 

原文地址:https://www.cnblogs.com/zztong/p/6695292.html